(12)有52张牌,使它们全部正面朝上,第一轮是从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;第二轮从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,直到翻的牌超过104张为止。统计最后有几张牌正面朝上,以及它们的位置号。
#include<stdio.h>
int a[1000];
void f(int n)
{
if(n==105)
return;
else
{
int i=1;
for(;i<=104;i++)
{
if(i%n==0)
{
if(a[i]==0)
a[i]=1;
else a[i]=0;
}
}
f(n+1);
}
}
int main()
{
f(2);
int tot=0;
int i=1;
printf("正面朝上牌的位置号:");
for(;i<=52;i++)
{
if(a[i]==0)
{
tot++;
printf("%d号,",i);
}
}
printf("\n");
printf("有%d张牌正面朝上",tot);
return 0;
}