纸牌问题2的倍数番一次以此类推到52的基数
问题描述:
任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?
答
双层循环,判断是否整除并且计数。最后的结果就是正面数。
答
用a数组记录翻了每张牌翻了多少次,最后是偶数倍的说明正面朝上。
#include<stdio.h>
int main()
{
int i,j,cnt=0,n=2,a[53]={0};
while(n!=52){
for(i=1;i<=52;i++){
if(i%n==0){
a[i]++;
}
}
n++;
}
for(i=1;i<=52;i++){
if(a[i]%2==0){
cnt++;
}
}
printf("%d\n",cnt);
}