高精度加法

来源:互联网 发布:简单的淘宝昵称大全 编辑:程序博客网 时间:2024/05/21 08:55


A+B大数版

Problem : 748

Time Limit : 1000ms

Memory Limit : 65536K

description

Calculate a+b 的值

input

多组输入,每组两个数 a,b(-10^20<=a,b<=10^20)

output

对于每组输入,输出 a+b 的值。(long long用%lld输出)

sample_input

1 5

sample_output

6

hint

用字符串直接加吧

source

#include<stdio.h>
#include<string.h>
#define N 10000
void daozhi(char a[],int m)
{
    int i;
    char temp;
    for(i=0;i<m/2;i++)
    {
        temp=a[i];
        a[i]=a[m-1-i];
        a[m-1-i]=temp;
    }
}

int main()
{
    void add(char a[],char b[],char c[]);
    char a[N],b[N];
    char str[N];
    long long m,i;
    while(~scanf("%s",a))
    {   m=0;
        scanf("%s",b);
        add(a,b,str);
    for(i=0;i<strlen(str);i++)
    {
        m=m*10+(str[i]-'0');
    }

    printf("%lld",m);
    }
    return 0;
}
void add(char a[],char b[],char c[])
{
    int i,e,d;
    int n,m;

    n=strlen(a);
    m=strlen(b);
    daozhi(a,n);
    daozhi(b,m);
    e=0;
for(i=0;i<n&&i<m;i++)
{
    d=b[i]-'0'+a[i]-'0'+e;
    e=d/10;
    c[i]=d%10+'0';
}
if(i<m)
    for(;i<m;i++)
{
    d=b[i]-'0'+e;
    e=d/10;
    c[i]=d%10+'0';
}
else
for(;i<n;i++)
{
    d=a[i]-'0'+e;
    e=d/10;
    c[i]=d%10+'0';
}
    if(e!=0)
    c[i++]=e+'0';
    c[i]=0;
    i=n;

    daozhi(c,n);
}

0 0
原创粉丝点击