2047 阿牛的EOF牛肉串
1 #include2 3 int main(){ 4 int n,i; 5 _int64 s[51]; 6 while(~scanf("%d",&n)){ 7 s[1]=3;s[2]=8; 8 for(i=3;i<=n;i++){ 9 s[i] = s[i-1]*2 + s[i-2]*2;10 }11 printf("%I64d\n",s[n]);12 }13 14 15 }
2048 神、上帝以及老天爷
1 #include2 3 int main(){ 4 int n,m,i; 5 _int64 s[21][2]; 6 while(~scanf("%d",&n)){ 7 while(n--){ 8 scanf("%d",&m); 9 s[1][0] = 0;s[2][0] = 1;s[1][1] = 1;s[2][1] = 2;10 for(i=3;i<=m;i++){11 s[i][0] = (i-1)*(s[i-1][0] + s[i-2][0]);12 s[i][1] = s[i-1][1] * i;13 }14 printf("%.2lf%%\n",s[m][0]*100.00/s[m][1]);15 }16 }17 18 }
转一个错排公式
错排公式推导:
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
第二步,放编号为k的元素,这时有两种情况:⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有D(n-2)种方法;⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有D(n-1)种方法;
综上得到
D(n) = (n-1) [D(n-2) + D(n-1)]
--------------------- 作者:程序小白_龙 来源:CSDN 原文:https://blog.csdn.net/dragon_dai_2017/article/details/70880960 版权声明:本文为博主原创文章,转载请附上博文链接!
2049 不容易系列之(4)——考新郎
1 #include2 3 int main(){ 4 int c,n,m,i,j; 5 _int64 s[21],num1,num2; 6 s[1] = 0;s[2] = 1; 7 for(i=3;i<21;i++){ 8 s[i] = (i-1)*(s[i-1] + s[i-2]); 9 }10 while(~scanf("%d",&c)){11 while(c--){12 scanf("%d %d",&n,&m);13 j=n;num1=1;num2=1;14 for(i=m;i>0;i--){15 num1 *= j;16 num2 *= i;17 j--;18 }19 printf("%I64d\n",num1/num2*s[m]);20 }21 }22 23 }
2051 Bitset
1 #include2 3 int main(){ 4 int n,i,j,s[50]; 5 while(~scanf("%d",&n)){ 6 i=0; 7 while(n/2>=1){ 8 s[i] = n%2; 9 i++;10 n /= 2;11 }12 s[i] = 1;13 for(j=i;j>=0;j--){14 printf("%d",s[j]);15 }16 printf("\n");17 }18 19 20 }
2052 Picture
1 #include2 3 int main(){ 4 int n,m,i,j; 5 char s[80][80]; 6 while(scanf("%d %d",&n,&m)!=EOF){ 7 for(i=0;i<=m+1;i++){ 8 for(j=0;j<=n+1;j++){ 9 if(i==0 || i==m+1){10 s[i][j] = '-';11 }else if(j==0 || j==n+1){12 s[i][j] = '|';13 }else{14 s[i][j] = ' ';15 }16 }17 }18 s[0][0] = '+';s[0][n+1] = '+';19 s[m+1][0] = '+';s[m+1][n+1] = '+';20 for(i=0;i<=m+1;i++){21 for(j=0;j<=n+1;j++){22 printf("%c",s[i][j]);23 }24 printf("\n");25 }26 printf("\n");27 }28 }
2053 Switch Game
1 #include2 3 int main(){ 4 int n,i,count; 5 while(~scanf("%d",&n)){ 6 count = 0; 7 for(i=1;i<=n;i++){ 8 if(n%i==0){count++;} 9 }10 if(count%2==0){printf("0\n");}11 else{printf("1\n");}12 }13 }
2056 Rectangles
1 #include2 3 void sort(double s[]){ 4 int i,j; 5 double temp; 6 for(i=1;i<5;i++){ 7 for(j=4;j>i;j--){ 8 if(s[i]>s[j]){ 9 temp = s[i];10 s[i] = s[j];11 s[j] = temp;12 }13 }14 }15 16 }17 18 int main(){19 int i,j;20 double x[10],y[10],temp;21 while(~scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x[1],&y[1],&x[2],&y[2],&x[3],&y[3],&x[4],&y[4])){22 if((x[3]>x[1]&&x[4]>x[1]&&x[3]>x[2]&&x[4]>x[2])||(x[3] y[1]&&y[4]>y[1]&&y[3]>y[2]&&y[4]>y[2])||(y[3]
2058 The sum problem
1 #include2 #include 3 4 int main(){ 5 int n,m,i,a; 6 while(~scanf("%d %d",&n,&m)){ 7 if(n==0&&m==0){ break;} 8 for(i=sqrt(m*2);i>0;i--){ 9 a = (m-(i-1)*i/2)/i;10 if(a*i+i*(i-1)/2==m){11 printf("[%d,%d]\n",a,a+i-1);12 }13 }14 printf("\n");15 }16 }