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;
    }
    
  • 相关阅读:
    [Tutorial] How to check and kill running processes in Ubuntu
    [Tutorial] Getting started with Gazebo in ROS
    Linux基础命令
    Linux安装系统
    vue 前后端数据交互问题解决
    如何在cmd中启动MongoDB服务器和客户端
    selenuim模块的使用 解析库
    beautifhulsoup4的使用
    浅谈scrapy框架安装使用
    自动登录 点赞 评论 抽屉网
  • 原文地址:https://www.cnblogs.com/orion7/p/7783368.html
Copyright © 2011-2022 走看看