5 条题解
-
1
#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; }
-
0
#include<bits/stdc++.h> using namespace std; string s1,s2; int a[1000],b[1000],c[10000],lena,lenb,lenc; int main(){ cin>>s1>>s2; lena=s1.size(); lenb=s2.size(); lenc=lena+lenb; for(int i=1;i<=lena;i++){ a[i]=s1[lena-i]-48; } for(int i=1;i<=lenb;i++){ b[i]=s2[lenb-i]-48; } for(int i=1;i<=lenb;i++){ for(int j=1;j<=lena;j++){ c[i+j-1]+=b[i]*a[j]; } } for(int i=1;i<=lenc;i++){ c[i+1]+=c[i]/10; c[i]=c[i]%10; } while(c[lenc]==0) lenc--; for(int i=lenc;i>=1;i--){ cout<<c[i]; } return 0; }
-
0
#include<bits/stdc++.h> using namespace std; char A[10001],B[10001],C[10001]; int a[10001],b[10001],c[10001]; int main(){ cin>>A>>B; int lena=strlen(A),lenb=strlen(B),lenc=lena+lenb; for(int i=0;i<lena;i++){ a[i]=A[lena-1-i]-'0'; } for(int i=0;i<=lenb;i++){ b[i]=B[lenb-1-i]-'0'; } for(int i=0;i<lena;i++){ for(int j=0;j<lenb;j++){ c[i+j]+=a[i]*b[j]; } } for(int i=0;i<lenc;i++){ c[i+1]+=c[i]/10; c[i]%=10; } while(lenc>0&&c[lenc]==0){ lenc--; } for(int i=lenc;i>=0;i--){ cout<<c[i]; } return 0; }
- 1
信息
- ID
- 1283
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 67
- 已通过
- 33
- 上传者