首页 > 试题广场 >

高精度加法

[问答题]

高精度加法

内容:

输入两个整数x、y,输出它们的和。(0≤x、y≤10 100

输入说明:

两行,每行一整数。

输出说明:

一行一整数

输入样例:

123 321

输出样例:

444
#include<iostream>
#include<cstring>
 using namespace std;
  int main() 
  { 
  string s1,s2;  
   int a[120],b[120],he; 
   int i; 
   memset(a,0,sizeof(a));
   memset(b,0,sizeof(b));   
   cin>>s1>>s2;   
   a[0]=s1.length();
   for(i=1;i<=a[0];i++)   
    {a[i]=s1[a[0]-i]-'0'; } 
b[0]=s2.length(); 
for(i=1;i<=b[0];i++) 
{b[i]=s2[b[0]-i]-'0'; } 
he=(a[0]>b[0]?a[0]:b[0]);    
for(i=1;i<=he;i++)   
{   a[i]+=b[i];   a[i+1]+=a[i]/10;  a[i]%=10;   } 
he++;   
while((a[he]==0)&&(he>1)) he--;   
for(i=he;i>=1;i--) cout<<a[i]; 
return 0;
}

 
#include <cstdio>
#include <cstring>
int main()
{
	char a[202]={0}, b[202]={0};
	scanf("%s%s", a, b);
	int alen = strlen(a), blen = strlen(b), t = 0, i;
	int a1[202]={0}, b1[202]={0};
	for (i = 0; i < alen; i++)	a1[i] = a[alen-1-i]-'0';
	for (i = 0; i < blen; i++)	b1[i] = b[blen-1-i]-'0';
	alen = (alen > blen) ? alen : blen;
	for (i = 0; i <= alen; i++)
	t = a1[i]+b1[i], a1[i] = t%10, a1[i+1] += t/10;
	while (!a1[i] && i) i--;
	for(; i >= 0; i--) printf("%d", a1[i]);
    return 0;

  • #include <cstring>
  • int main()
  • {
  • char a[202]={0}, b[202]={0};
  • scanf("%s%s", a, b);
  • int alen = strlen(a), blen = strlen(b), t = 0, i;
  • int a1[202]={0}, b1[202]={0};
  • for (i = 0; i < alen; i++) a1[i] = a[alen-1-i]-'0';
  • for (i = 0; i < blen; i++) b1[i] = b[blen-1-i]-'0';
  • alen = (alen > blen) ? alen : blen;
  • for (i = 0; i <= alen; i++)
  • t = a1[i]+b1[i], a1[i] = t%10, a1[i+1] += t/10;
  • while (!a1[i] && i) i--;
  • for(; i >= 0; i--) printf("%d", a1[i]);
  • return 0;
  • 发表于 2019-09-11 11:44:09 回复(0)