编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的,直到以52为基数的翻过,输出此时正面向上的牌。输入数据:纸牌编号; 如上规则所述,输出最后正面向上的纸牌编号。
用线性表的存储来实现一个C++算法,谁有比较简单的算法,互相交流一下
以下是个例子,好象不对
#include<iostream>
using namespace std;
int main(int agc,char* agm[])
{
bool card[6];
int card_index = 0;
for(;card_index < 6;card_index++)
card[card_index] = true;
for(card_index = 2;card_index < 6;card_index++)
{
for(int times = 2;card_index*times < 6;times++)
{
card[card_index*times]= (card[card_index*times]==true)? false:true;
}
}
for(card_index = 1;card_index < 6;card_index++)
if(card[card_index] == true)
cout<<card_index<<endl;
return 1;
}