1. 高精度乘法
【题目描述】
输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。
【输入】
输入两个高精度正整数M和N。
【输出】
求这两个高精度数的积。
【输入样例】
36
3
【输出样例】
108
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char m[110],n[110];
int a[1000],b[1000],c[1000];
int main()
{
cin>>m;
cin>>n;
int alen=strlen(m);
int blen=strlen(n);
int clen=0;
for(int i=0;i<alen;i++)
{
a[alen-i]=m[i]-'0';
}
for(int i=0;i<blen;i++)
{
b[blen-i]=n[i]-'0';
}
for(int i=1;i<=alen;i++)
{
for(int j=1;j<=blen;j++)
{
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
clen=alen+blen;
while(c[clen]==0 && clen>1)
{
clen--;
}
for(int i=clen;i>=1;i--)
{
cout<<c[i];
}
return 0;
}
2.大整数加法
【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char arrstring[205],brrstring[205];
int qW(int a,int b)
{
if(a>=b)
{
return a;
}
else
{
return b;
}
}
int main()
{
int len=0;
cin>>arrstring;
cin>>brrstring;
len = qW(strlen(arrstring),strlen(brrstring));
int arrint[205]={0};
int brrint[205]={0};
int crrint[205]={0};
int alen=strlen(arrstring);
int blen=strlen(brrstring);
for(int i=0;i<alen;i++)
{
arrint [alen-i]=arrstring[i]-'0';
}
for(int i=0;i<blen;i++)
{
brrint [blen-i]=brrstring[i]-'0';
}
for(int i=1;i<=len;i++)
{
crrint[i]+=arrint[i]+brrint[i];
crrint[i+1]=crrint[i]/10;
crrint[i]=crrint[i]%10;
}
while(crrint[len+1]==0 && len>0)
{
len--;
}
for(int i=len+1;i>0;i--)
{
cout<<crrint[i];
}
return 0;
}
3.大整数减法
【题目描述】
求两个大的正整数相减的差。
【输入】
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
【输出】
一行,即所求的差。
【输入样例】
9999999999999999999999999999999999999
9999999999999
【输出样例】
9999999999999999999999990000000000000
标签:205,高精度,int,样例,计算,include,strlen
From: https://www.cnblogs.com/jsc2014/p/18308038