行测求答案

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:55:57
100张多米诺骨牌整齐地排成一列,依顺序编号为1、2、3……99、100。第一次拿走所有奇数位置上的骨牌,第二次再从剩余骨牌中拿走所有奇数位置上的骨牌,依此类推。请问最后剩下的一张骨牌的编号是多少?( )。
A.32 B.64 C.88 D.96
答案是多少?怎么算的?
谢谢各位

答案是B.64
算法:

#include<iostream>
#include<list>
using namespace std;

class Algo
{
public:
Algo();
void delOdd();
void print();
bool flag();
private:
list<int> ilist;
};

Algo::Algo()
{
for( int i = 1; i<100; i++ )
{
ilist.push_back( i );
}
}

void Algo::delOdd()
{
list<int>::iterator iter = ilist.begin();

while(true)
{
iter = ilist.erase(iter);

if( iter==ilist.end() )
{
break;
}

iter++;

if( iter==ilist.end() )
{
break;
}
}
return;
}

void Algo::print()
{
cout<<"====================="<<endl;
for( list<int>::iterator iter = ilist.begin(); iter != ilist.end(); iter++ )
{
cout<<" "<<(*iter);
}<