完了,高精超时了!

P1655 小朋友的球

@[YuRuochen](/user/658786) 尽量用char数组,string虽然舒服方便但容易超时
by Vanishing_Stars @ 2022-09-16 22:28:47


@[CODE_SUPERVISOR](/user/786586) AC了,数组开太小了,但是不知道为什么是TLE。。。 ```cpp #include<bits/stdc++.h> using namespace std; int n,m; string dp[110][110]; string pro(string a,int b){ int c[1010]={0},len=a.length(),w=len; for(int i=0;i<len;i++) c[i]=a[len-i-1]-'0'; for(int i=0;i<len;i++) c[i]*=b; for(int i=0;i<len;i++){ if(c[i]>9){ c[i+1]+=c[i]/10; c[i]%=10; } } while(c[w]){ if(c[w]>9){ c[w+1]+=c[w]/10; c[w]%=10; } w++; } string p=""; for(int i=w-1;i>=0;i--) p+=char(c[i]+'0'); return p; } string plu(string sa,string sb){ int a[1010]={0},b[1010]={0},c[1010]={0},la=sa.length(),lb=sb.length(),w=max(la,lb); for(int i=0;i<la;i++) a[i]=sa[la-i-1]-'0'; for(int i=0;i<lb;i++) b[i]=sb[lb-i-1]-'0'; for(int i=0;i<w;i++) c[i]=a[i]+b[i]; for(int i=0;i<w;i++){ if(c[i]>9){ c[i+1]++; c[i]-=10; } } if(c[w]) w++; string p=""; for(int i=w-1;i>=0;i--) p+=char(c[i]+'0'); return p; } int main(){ dp[0][0]="1"; for(int i=1;i<=100;i++){ for(int j=1;j<=i;j++){ if(j==1||i==j) dp[i][j]="1"; else dp[i][j]=plu(pro(dp[i-1][j],j),dp[i-1][j-1]); } } while(~scanf("%d%d",&n,&m)){ if(dp[n][m]=="") putchar('0'); else cout<<dp[n][m]; putchar('\n'); } return 0; } ```
by YuRuochen @ 2022-09-16 22:36:47


|