编号为1-52张牌,开始时正面均向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到以52为基数的翻过,输出:这时正面向上的牌有哪些?
代码如下:
#include "stdio.h"
int main()
{
int pai[53]={0};//0为上 1为下
int i,k;
for(i=2;i<=52;i++)
{
k=i;
while( k <= 52)
if(k++%i)
pai[k-1]^=1;
}
for(i=1;i<=52;i++)
if(!pai[i])
printf("%d ",i);
return 0;
}
|