vue大型网站开发吗重庆seo招聘
题目描述
求两个不超过100位的非负整数的乘积。
输入
有两行,每行是一个不超过100位的非负整数,没有多余的前导0。
输出
一行,相乘后的结果。
样例输入 Copy
123456789 123456789
样例输出 Copy
15241578750190521
代码实现:
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
//定义数字部分
#define MAXLEN 250
#define RMAXLEN 500
//定义字符串,字符数组部分
string s1,s2;
int a[MAXLEN],b[MAXLEN],c[RMAXLEN],k;
int main()
{//输入两个数,用字符串格式输入cin>>s1;cin>>s2;//识别字符串长度,并进行逆序转存int len1=s1.length();for(int i=0;i<len1;i++){a[len1-1-i]=s1[i]-'0';}int len2=s2.length();for(int i=0;i<len2;i++){b[len2-1-i]=s2[i]-'0';}//循环计算部分for(int i=0;i<s1.length();i++){for(int j=0;j<s2.length();j++){k=i+j;//位数逐一相乘c[k]+=a[i]*b[j];//处理计算中的进位问题if(c[k]>=10){//满足条件,前一位进整除位,当前位对10 modc[k+1]+=c[k]/10;c[k]%=10;}}}//处理是否进位到了c[len]位int len=s1.length()+s2.length()+1;if(c[len]>0){len++;}//去除多余的前导0while(c[len-1]==0&&len>1){len--;}//逆序输出for(int i=len-1;i>=0;i--){cout<<c[i];}return 0;
}