1 条题解
-
0
C :
/*有52张扑克牌,使它们全部正面朝上。从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下; 接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上; 接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律翻转; 依此类推,直到第1张要翻的牌是第52张为止。统计最后有几张牌正面朝上,并打印出它们的位置。*/ #include<stdio.h> #include<stdlib.h> #include<string.h> int a[53]; int q[53]; int main() {int m=0,i,j,c=0,k=0; memset(a,0,sizeof(a));//0 up for(i=2;i<=52;i++) { for(j=i;j<=52;j=j+i) { a[j]=!a[j]; }} for(m=1;m<=52;m++) {if (a[m]==0){q[c++]=m;}} printf("%d\n",c); for(i=0;i<c;i++) if(k==0){printf("%d",q[i]);k=1;} else printf(" %d",q[i]);return 0;}
C++ :
#include<cmath> #include<iostream> using namespace std; int main() { int i; bool a[52+1]; for (i=1;i<=52;i++) a[i]=true; for (i=2;i<=52;++i) { int j=i; while (j<=52) {a[j]=!a[j]; j=j+i;} } int m=0; for (i=1;i<=52;i++) if (a[i]) m++; cout<<m<<endl<<1; for (i=2;i<=52;++i) if (a[i]) cout<<" "<<i; cout<<endl; return 0; }
Java :
public class Main { public static void main(String[] args) { int[] num=new int[52]; for(int i=0;i<52;i++)num[i]=1; int b=2,count=0; String s=""; while(b<=52){ for(int i=b-1;i<=51;i++){ if((i+1)%b==0)num[i]=-num[i]; } b++; } for(int i=0;i<52;i++){ if(num[i]==1){ count++; s+=i+1+" "; } } System.out.println(count); System.out.println(s.trim()); } }
- 1
信息
- ID
- 434
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者