【问题描述】
请编程实现,输入两个高精度数,输出它们的和的n倍。(1<=n<=9),注意: 这两个高精度数的位数不一定相同且有可能产生进位。
【输入输出描述】
输入: 两行,第一行为高精度数a ,第二行为高精度数b。
输出: 一行, 一个高精度数c ,表示a与b的和的n倍。
【样例输入】
1111111222
1111111223
2
【样例输出】
4444444890
#include<iostream> #include<cstring> using namespace std; int main() { char a[201], b[201]; int a2[201]={}, b2[201]={}, c, c2[202]={}, d2[205]={}; cin >> a >> b >> c; int lena = strlen(a), lenb = strlen(b); for(int i=0; i<=lena-1; i++) a2[lena-i] = a[i] - 48; // 下标从1开始的。 for(int i=0; i<=lenb-1; i++) b2[lenb-i] = b[i] - 48; // 下标从1开始的。 // 高精度加法 int maxlen = max(lena, lenb), jw=0, i; for(i=1; i<=maxlen; i++) { int t = a2[i] + b2[i] + jw; jw = t/10; c2[i] = t%10; } if(jw) c2[i] = jw; else i--; // 高精度*c(c是一位整数); int jw2=0, j; for(j=1; j<=i; j++) { int t = c2[j]*c + jw2; jw2 = t/10; d2[j] = t%10; } if(jw2) d2[j]=jw2; else j--; for(int i=j; i>=1; i--) cout << d2[i]; return 0; }
标签:201,高精度,int,相加,一位数,include,strlen From: https://www.cnblogs.com/dks0313/p/17358811.html