zoukankan      html  css  js  c++  java
  • HDU 6625 2017ACM/ICPC亚洲区域赛沈阳站 Little Boxes(高精度整数加法)

    Problem Description
    Little boxes on the hillside.
    Little boxes made of ticky-tacky.
    Little boxes.
    Little boxes.
    Little boxes all the same.
    There are a green boxes, and b pink boxes.
    And c blue boxes and d yellow boxes.
    And they are all made out of ticky-tacky.
    And they all look just the same.

    Input
    The input has several test cases. The first line contains the integer t (1 ≤ t ≤ 10) which is the total number of test cases.
    For each test case, a line contains four non-negative integers a, b, c and d where a, b, c, d ≤ 2^62, indicating the numbers of green boxes, pink boxes, blue boxes and yellow boxes.

    Output
    For each test case, output a line with the total number of boxes.

    Sample Input
    4
    1 2 3 4
    0 0 0 0
    1 0 0 0
    111 222 333 404

    Sample Output
    10
    0
    1
    1070

    题意:

    给了四个long long数,求四个数之和。

    题解:

    long long范围内的数相加会溢出,所以用大整数加法,套模板就好了。

    /*大数加法*/ 
    # include<cstdio>
    # include<cstring>
    # include<cstdlib>
    #include<iostream>
    using namespace std;
    void add(char* a,char* b,char* c)
    {
        int i,j,k,max,min,temp;
        char *s,*pmax,*pmin;
        max=strlen(a);
        min=strlen(b);
        if (max<min)
        {
            temp=max;
            max=min;
            min=temp;
            pmax=b;
            pmin=a;
        }
        else
        {
            pmax=a;
            pmin=b;
        }
        s=(char*)malloc(sizeof(char)*(max+1));
        s[0]='0';
        for (i=min-1,j=max-1,k=max;i>=0;i--,j--,k--)
            s[k]=pmin[i]-'0'+pmax[j];
           for (;j>=0;j--,k--)
               s[k]=pmax[j];
        for (i=max;i>=0;i--)
            if (s[i]>'9')
            {
                s[i]-=10;
                s[i-1]++;
            }
        if (s[0]=='0')
        {
            for (i=0;i<=max;i++)
                c[i-1]=s[i];
               c[i-1]='';
        }
        else
        {
            for (i=0;i<=max;i++)
                c[i]=s[i];
               c[i]='';
        }
        free(s);
    }
    int main()
    {
        int n;
        cin>>n;
        while(n--)
        {
            char a[100],b[100],c[100],d[100],ans[100];
            cin>>a>>b>>c>>d;
            add(a,b,ans);
            add(ans,c,ans);
            add(ans,d,ans);
            cout<<ans<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    day12——Python高阶函数及匿名函数
    day11——Python函数的一般形式、函数的参数
    day10——Python file操作
    day9——Python复习
    day8——Python if,while,for
    day7——Python的帮助
    day6——Python数据类型
    sqlserver执行sql文件命令(sqlcmd)
    数据库快照、游标、锁
    Linux 下根据进程名kill进程
  • 原文地址:https://www.cnblogs.com/orion7/p/7783368.html
Copyright © 2011-2022 走看看