• 杭电oj2047-2049、2051-2053、2056、2058


    2047  阿牛的EOF牛肉串

     1 #include<stdio.h>
     2 
     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
    ",s[n]);
    12     }
    13         
    14     
    15 }

    2048  神、上帝以及老天爷

     1 #include<stdio.h>
     2 
     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%%
    ",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 #include<stdio.h>
     2 
     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
    ",num1/num2*s[m]);
    20         }
    21     }
    22 
    23 }

    2051  Bitset

     1 #include<stdio.h>
     2 
     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("
    ");
    17     }
    18 
    19     
    20 }

    2052   Picture

     1 #include<stdio.h>
     2 
     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("
    ");
    25         }
    26         printf("
    ");
    27     }
    28 }

    2053   Switch Game

     1 #include<stdio.h>
     2 
     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
    ");}
    11         else{printf("1
    ");}
    12     }
    13 }

    2056  Rectangles

     1 #include<stdio.h>
     2 
     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]<x[1]&&x[4]<x[1]&&x[3]<x[2]&&x[4]<x[2])||(y[3]>y[1]&&y[4]>y[1]&&y[3]>y[2]&&y[4]>y[2])||(y[3]<y[1]&&y[4]<y[1]&&y[3]<y[2]&&y[4]<y[2])){
    23             printf("0.00
    ");
    24         }else{
    25             sort(x);
    26             sort(y);
    27             printf("%.2lf
    ",(x[3]-x[2])*(y[3]-y[2]));
    28         }
    29     }
    30 }

    2058  The sum problem

     1 #include<stdio.h>
     2 #include<math.h>
     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]
    ",a,a+i-1);
    12             }
    13         }
    14         printf("
    ");
    15     }
    16 }
  • 相关阅读:
    Linux基础
    杂谈
    MySQL基础
    Effective Java-第4章
    Effective Java-第三章
    Effective Java-第二章
    mybatis
    mapper.xml文件
    Mybatis
    mybatis-config.xml文件详解
  • 原文地址:https://www.cnblogs.com/Ragd0ll/p/10498821.html
Copyright © 2020-2023  润新知