hdu2042

计算题```

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int N;
 5     while (scanf("%d",&N)!=EOF)
 6     {
 7         int i;
 8         for (i=1;i<=N;i++)
 9         {
10             long long a,j,sum=3;
11             scanf("%I64d",&a);
12             for (j=1;j<=a;j++) sum=(sum-1)*2;
13             printf("%I64d\n",sum);
14         }
15     }
16     return 0;
17 }
View Code

 

hdu2043

判断字符串是否符合条件,ifelse乱搞题

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int M;
 6     while (scanf("%d",&M)!=EOF)
 7     {
 8         int i;
 9         for (i=1;i<=M;i++)
10         {
11             char a[51];
12             int b[4]={0},j,len,count=0;
13             scanf("%s",a);
14             len=strlen(a);
15             if (len>=8&&len<=16)
16             {
17                 for (j=0;j<len;j++)
18                 {
19                     if (b[0]==0&&a[j]>='A'&&a[j]<='Z') b[0]=1;
20                     if (b[1]==0&&a[j]>='a'&&a[j]<='z') b[1]=1;
21                     if (b[2]==0&&a[j]>='0'&&a[j]<='9') b[2]=1;
22                     if (b[3]==0&&(a[j]=='~'||a[j]=='!'||a[j]=='@'||a[j]=='#'||a[j]=='$'||a[j]=='%'||a[j]=='^')) b[3]=1;
23                 }
24                 for (j=0;j<4;j++) if (b[j]==1) count++;
25                 if (count>=3) printf("YES\n");
26                 else printf("NO\n");
27             }
28             else printf("NO\n");
29         }
30     }
31     return 0;
32 }
View Code

 

hdu2044

按理说是道递推,但是很不幸,我用组合数学做的```

 1 #include<stdio.h>
 2 long long c(int a,int b)
 3 {
 4     long long i,sum=1,j;
 5     for (i=a,j=1;i>=a-b+1,j<=b;i--,j++) sum=sum*i/j;
 6     return sum;
 7 }
 8 
 9 int main()
10 {
11     int N;
12     while (scanf("%d",&N)!=EOF)
13     {
14         int i;
15         for (i=1;i<=N;i++)
16         {
17             int a,b,x,y,m,j;
18             long long sum=0;
19             scanf("%d%d",&a,&b);
20             m=b-a;
21             if (m%2) y=1;
22             else y=0;
23             for (x=m/2;x>=0;x--,y+=2) sum+=c(x+y,x);
24             printf("%I64d\n",sum);
25         }
26     }
27     return 0;
28 }
View Code

 

hdu2045

递推瞎搞

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int N,i;
 5     long long a[50];
 6     a[0]=3;
 7     a[1]=6;
 8     a[2]=6;
 9     for (i=3;i<50;i++) a[i]=a[i-1]+2*a[i-2];
10     while (scanf("%d",&N)!=EOF)
11     {
12         printf("%I64d\n",a[N-1]);
13     }
14     return 0;
15 }
View Code

 

hdu2046

又是一道被我做成组合数学的递推……

 1 #include<stdio.h>
 2 long long c(int a,int b)
 3 {
 4     long long i,sum=1,j;
 5     for (i=a,j=1;i>=a-b+1,j<=b;i--,j++) sum=sum*i/j;
 6     return sum;
 7 }
 8 
 9 int main()
10 {
11     int n;
12     while (scanf("%d",&n)!=EOF)
13     {
14         int i,j;
15         long long sum=0;
16         for (i=0;i<=n/2;i++) 
17         {
18             j=n-i*2;
19             sum+=c(i+j,i);
20         }
21         printf("%I64d\n",sum);
22     }
23     return 0;
24 }
View Code

 

hdu2047

依旧是一道被我做成组合数学的递推…………

 1 #include<stdio.h>
 2 #include<math.h>
 3 __int64 c(int a,int b)
 4 {
 5     __int64 i,sum=1,j;
 6     for (i=a,j=1;i>=a-b+1,j<=b;i--,j++) sum=sum*i/j;
 7     return sum;
 8 }
 9 
10 int main()
11 {
12     int n;
13     while (scanf("%d",&n)!=EOF)
14     {
15         int i,imax;
16         __int64 sum=0;
17         imax=(n%2)?((n+1)/2):(n/2);
18         for (i=0;i<=imax;i++) sum+=(c(n-i+1,i)*(__int64)(pow(2.0,n-i)));
19         printf("%I64d\n",sum);
20     }
21     return 0;
22 }
View Code

 

hdu2048

还是一道被我做成组合数学的递推………………

 1 #include<stdio.h>
 2 #include<math.h>
 3 long long C(int a,int b)
 4 {
 5     long long i,sum=1,j;
 6     for (i=a,j=1;i>=a-b+1,j<=b;i--,j++) sum=sum*i/j;
 7     return sum;
 8 }
 9 
10 long long A(int a)
11 {
12     long long i,sum=1;
13     for (i=1;i<=a;i++) sum*=i;
14     return sum;
15 }
16 
17 int main()
18 {
19     int n,m;
20     long long b[21];
21     b[2]=1;
22     b[3]=2;
23     for (m=4;m<=20;m++) b[m]=(m-1)*(b[m-1]+b[m-2]);
24     while (scanf("%d",&n)!=EOF)
25     {
26         int i;
27         double per;
28         for (i=1;i<=n;i++)
29         {
30             int a;
31             scanf("%d",&a);
32             per=(((double) b[a])/A(a))*100;
33             printf("%.2lf%%\n",per);
34         }
35     }
36     return 0;
37 }
View Code

 

hdu2049

仍然是一道被我做成组合数学的递推……………………

 1 #include<stdio.h>
 2 long long C(int a,int b)
 3 {
 4     long long i,sum=1,j;
 5     for (i=a,j=1;i>=a-b+1,j<=b;i--,j++) sum=sum*i/j;
 6     return sum;
 7 }
 8 
 9 int main()
10 {
11     int n,m;
12     long long b[21];
13     b[2]=1;
14     b[3]=2;
15     for (m=4;m<=20;m++) b[m]=(m-1)*(b[m-1]+b[m-2]);
16     while (scanf("%d",&n)!=EOF)
17     {
18         int i;
19         for (i=1;i<=n;i++)
20         {
21             int N,M;
22             long long sum;
23             scanf("%d%d",&N,&M);
24             sum=C(N,M)*b[M];
25             printf("%I64d\n",sum);
26         }
27     }
28     return 0;
29 }
View Code

 

hdu2050

终于我是用递推做的了```一个好好的递推专题,我就只有两道用递推做```递推我对不起你```

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int C;
 5     long long sum[10001];
 6     sum[1]=2;
 7     for (C=2;C<=10000;C++) sum[C]=sum[C-1]+1+4*(C-1);
 8     while (scanf("%d",&C)!=EOF)
 9     {
10         int i;
11         for (i=1;i<=C;i++)
12         {
13             int n;
14             scanf("%d",&n);
15             printf("%I64d\n",sum[n]);
16         }
17     }
18     return 0;
19 }
View Code