首页 > 代码库 > 52张牌

52张牌

有52张牌,使它们全部正面朝上,从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;接着第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,直到第1张要翻的牌是第52张为止。统计最后有几张牌正面朝上,以及它们的位置号。
 
 1 #include<iostream> 2 using namespace std; 3 int a[1001];// 0正面朝上  4 void f(int n) 5 { 6     if(n==53) 7     return; 8     else 9     {10         for(int i=1;i<=52;i++)11         {12             if(i%n==0)13             {14                 if(a[i]==0)15                 a[i]=1;16                 else a[i]=0;17              } 18         } 19         f(n+1);20     }21 }22 int main()23 {24     f(2);25     int tot=0;26     for(int i=1;i<=52;i++)27     {28         if(a[i]==0)29         {30             tot++;31             cout<<i<<" ";32         }33     }34     cout<<endl;35     cout<<tot;36     return 0;37 }

 

52张牌