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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
浙公网安备 33010602011771号