3 条题解
-
0
using namespace std; char a1[114514],b1[114514]; int a[114514],b[114514],c[114514]; int main(){ int lc=1,x=0; cin>>a1>>b1; int la=strlen(a1); int lb=strlen(b1); for(int i=0;i<la;i++) a[la-i]=a1[i]-'0'; for(int i=0;i<lb;i++) b[lb-i]=b1[i]-'0'; for(int i=1;i<=la;i++){ x=0;//每一次循环开始前,进位归零 for(int j=1;j<=lb;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; lc++; } c[lb+i]=x; } while(c[lc]==0&&lc>1) lc--; for(int i=lc;i>=1;i--) cout<<c[i]; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; char a1[114514],b1[114514]; int a[114514],b[114514],c[114514]; int main(){ cin>>a1>>b1; int la=strlen(a1),lb=strlen(b1); for(int i=0;i<la;i++) a[la-i]=a1[i]-'0'; for(int i=0;i<lb;i++) b[lb-i]=b1[i]-'0'; int lc=1; int x; for(int i=1;i<=la;i++){ x=0; for(int j=1;j<=lb;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; lc++; } c[lb+i]=x; } while(c[lc]==0&&lc>1) lc--; for(int i=lc;i>=1;i--) cout<<c[i]; return 0; }~~~~
-
0
#include<bits/stdc++.h> using namespace std; char a1[9999],b1[9999];//用字符数组保存 int a[9999],b[9999],c[9999];//用于计算的整形数组,a、b为字符数组逆序转换而来,c为最终的答案 int main(){ cin>>a1>>b1;//输入数据 int la=strlen(a1),lb=strlen(b1);//计算字符数组长度 for(int i=0;i<la;i++) a[la-i]=a1[i]-'0';//逆序保存 for(int i=0;i<lb;i++) b[lb-i]=b1[i]-'0';//注意,这里数组的长度为1-la/lb int lc=la+lb;//分别表示进位和表示计算的位置 for(int i=1;i<=la;i++){//相乘及处理进位 for(int j=1;j<=lb;j++){ c[i+j-1] += a[i]*b[j]; c[i+j] +=c[i+j-1]/10; c[i+j-1] %= 10; } } while(c[lc]==0&&lc>1) lc--;//去掉前面多余的0,本身是0就保存 for(int i=lc;i>=1;i--) cout<<c[i];//打印 return 0; }
- 1
信息
- ID
- 284
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 4
- 标签
- 递交数
- 44
- 已通过
- 23
- 上传者