60分求大佬优化!!!
查看原帖
60分求大佬优化!!!
373226
justinjia楼主2021/1/12 18:54
R44882457 记录详情\colorbox{black}{\color{white}{R44882457 记录详情}}
测试点信息\color{lightblue}{\text{测试点信息}} \#1&\#2&\#3&\#4&\#5&\#6&\#7&\#8&\#9&\#10\\ \colorbox{darkblue}{\color{white}{TLE}}&\colorbox{darkblue}{\color{white}{TLE}}&\colorbox{green}{\color{white}{AC}}&\colorbox{green}{\color{white}{AC}}&\colorbox{green}{\color{white}{AC}}&\colorbox{green}{\color{white}{AC}}&\colorbox{green}{\color{white}{AC}}&\colorbox{green}{\color{white}{AC}}&\colorbox{darkblue}{\color{white}{TLE}}&\colorbox{darkblue}{\color{white}{TLE}} \end{matrix}$$ - - -

\color{lightblue}{\text{源代码}}

```cpp #include"stdio.h" #include"math.h" #define int long long int p,a[1000000],num,remain,r,len=1,k=499; signed main(void){ a[0]=1; scanf("%d",&p); num=p/30; remain=p%30; r=pow(2,remain); for(int i=0;i<num;i++){ for(int j=0;j<len;j++) a[j]*=1073741824/*2^30*/; for(int j=1;j<=len;j++){ a[j]+=a[j-1]/10; a[j-1]%=10; } while(a[len]){ a[len+1]+=a[len]/10; a[len++]%=10; } } for(int i=0;i<len;i++) a[i]*=r; for(int i=1;i<=len;i++){ a[i]+=a[i-1]/10; a[i-1]%=10; } while(a[len]){ a[len+1]+=a[len]/10; a[len++]%=10; } a[0]--; printf("%d\n",len); for(int i=0;i<10;i++){ for(int j=0;j<50;j++) printf("%lld",a[k--]); printf("\n"); } return 0; } ``` - - - 本人不太懂快速幂这个东西~~因为我太蒻了~~,所以顺便问一下各位大佬有没有不用快速幂的方法?~~(打表除外)~~
2021/1/12 18:54
加载中...