1 条题解
-
0
#include<bits/stdc++.h> using namespace std; typedef long long LL; const LL Base=1e8; struct node { LL a[31100],len; node() { len=1; memset(a,0,sizeof(a)); } }; char st[110000]; 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]; no.a[i+j]+=no.a[i+j-1]/Base; no.a[i+j-1]%=Base; } for(int i=1;i<=no.len;i++) { no.a[i+1]+=no.a[i]/Base; no.a[i]%=Base; } int i=no.len; while(no.a[i+1]>0) { i++; no.a[i+1]+=no.a[i]/Base; no.a[i]%=Base; } while((no.a[i]==0)&&(i>1)) i--; no.len=i; return no; } int main() { node no,n1,n2; scanf("%s",st+1);n1.len=strlen(st+1); for(int i=1;i<=n1.len;i++) n1.a[(n1.len-i+1+7)/8]=n1.a[(n1.len-i+1+7)/8]*10+st[i]-'0'; n1.len=(n1.len+7)/8; scanf("%s",st+1);n2.len=strlen(st+1); for(int i=1;i<=n2.len;i++) n2.a[(n2.len-i+1+7)/8]=n2.a[(n2.len-i+1+7)/8]*10+st[i]-'0'; n2.len=(n2.len+7)/8; no=n1*n2; printf("%lld",no.a[no.len]); for(int i=no.len-1;i>=1;i--) printf("%08lld",no.a[i]); printf("\n"); return 0; }
- 1
信息
- ID
- 485
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 442
- 已通过
- 58
- 上传者