1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e6; struct node { int len, a[N]; node() {len=1; memset(a, 0, sizeof(a));} }; char s[N]; node operator*(node n1, node n2) { node no; no.len=n1.len+n2.len-1; for(int i=1; i<=n1.len; i++) for(int j=1; j<=n2.len; j++) no.a[i+j-1]+=n1.a[i]*n2.a[j]; for(int i=1; i<=no.len; i++) { no.a[i+1]+=no.a[i]/10; no.a[i]%=10; } int i=no.len; while(no.a[i+1]>0) { i++; no.a[i+1]+=no.a[i]/10; no.a[i]%=10; } while(no.a[i]==0 && i>1) i--; no.len=i; return no; } node q_pow(node A, int b) { node C; C.a[1]=1; for(; b; b>>=1) { if(b&1) C=C*A; A=A*A; } return C; } int main() { scanf("%s", s+1); int slen=strlen(s+1); node n1; n1.len=slen; int p; scanf("%d", &p); for(int i=1; i<=slen; i++) n1.a[slen-i+1]=s[i]-'0'; node no=q_pow(n1, p); int t=0; for(int i=no.len; i>=1; i--) { t++; printf("%d", no.a[i]); if(t%70==0) printf("\n"); } printf("\n"); return 0; }
- 1
信息
- ID
- 2614
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 37
- 已通过
- 22
- 上传者