2 条题解
-
1
#include<iostream> #include<cstring> #include<string> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; int a[2005]={}; int b[2005]={}; int c[4010]={}; int res[4010]; string s1,s2; int main(){ cin >> s1 >> s2; int lena = s1.length(); int lenb = s2.length(); int len = lena+lenb; for(int i=lena-1,j=1;i>=0;i--,j++){ a[j] = s1[i] - '0'; } for(int i=lenb-1,j=1;i>=0;i--,j++){ b[j] = s2[i] - '0'; } for(int i=1;i<=lena;i++){ for(int j=1;j<=lenb;j++) c[j+i-1] += a[i]*b[j]; } int tmp=0; for(int i=1;i<=len;i++){ c[i+1] += c[i]/10; c[i]%=10; } while(c[len]==0&&len !=1){ len--; } for(int i=len;i>=1;i--){ cout << c[i]; } return 0; }
-
0
高精度
#include <iostream> #include <cstring> #define max 1000000 using namespace std; int main() { int a[max],b[max],c[max+1]; string sa,sb; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); int x = 0; cin>>sa>>sb; if (sa.size() >= max) { return 0; } if (sb.size() >= max) { return 0; } int lena = sa.size(); int lenb = sb.size(); for (int i = 0;i < sa.size();i++) { a[lena-i] = sa[i] - '0'; } for (int i = 0;i < sb.size();i++) { b[lenb-i] = sb[i] - '0'; } int lenc = 0; for (int i = 1;i <= lena;i++) { x = 0; for (int j = 1;j <= lenb;j++) { c[i+j-1] = a[i]*b[j]+x+c[i+j-1]; x = c[i+j-1] / 10; c[i+j-1] %= 10; } c[i+lenb] = x; } lenc=lena+lenb; for (int i = 0;i <= lenc;i++) { if (c[lenc] == 0) { lenc--; } if (c[lenc] > 0) { break; } } for (int i = lenc;i >= 1;i--) { cout<<c[i]; } return 0; }
- 1
信息
- ID
- 304
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 60
- 已通过
- 24
- 上传者