求教

P1096 [NOIP2007 普及组] Hanoi 双塔问题

###### 超时了5个点。
by JYK0307帅 @ 2019-04-13 14:49:37


@[JYK0307帅](/space/show?uid=118956) 这么做不行,要用数学方法算出答案,是$2^{2n}-1$然后输出
by 樱初音斗橡皮 @ 2019-04-13 14:53:32


希望更丰富的展现?使用Markdown
by Zirnc @ 2019-04-13 14:57:36


@[JYK0307帅](/space/show?uid=118956) 递推不谢 ```cpp #include <bits/stdc++.h> using namespace std; const int N=123; int a[N]; void add(int ad) { a[1]+=ad; for(int i=1;i<N;i++) { if(a[i]>=10) { a[i+1]+=a[i]/10; a[i]=a[i]%10; } } } void time(int ti) { for(int i=1;i<N;i++) { a[i]*=ti; } for(int i=1;i<N;i++) { if(a[i]>=10) { a[i+1]+=a[i]/10; a[i]=a[i]%10; } } } void print() { bool pd=0; for(int i=N;i>0;i--) { if(a[i]) pd=1; if(pd) printf("%d",a[i]); } } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { add(1); time(2); } print(); return 0; } ```
by Smile_Cindy @ 2019-04-13 15:38:07


|