HDU6225 Little Boxes【大数 C++】

原题链接:Little Boxes

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 2542    Accepted Submission(s): 918


 

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

 

Source

2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)

 

Recommend

jiangzijing2015

C++

/* HDU6225 Little Boxes */
 
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
typedef unsigned long long ULL;
 
int main()
{
 
    int t;
    scanf("%d", &t);
    while(t--) {
        ULL a, b, c, d, maxv = ((ULL)1 << 62);
 
        scanf("%llu%llu%llu%llu", &a, &b, &c, &d);
 
        if(a == maxv && b == maxv && c == maxv && d == maxv)
            printf("18446744073709551616\n");       // 4个2^62之和
        else
            printf("%llu\n", a + b + c + d);
    }
 
    return 0;
}

C++(128位整数)

/* HDU6225 Little Boxes */
 
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
typedef unsigned long long ULL;
 
void myitoa(__int128_t v, char* s)
{
    char temp;
    int i=0, j;
 
    while(v >0) {
        s[i++] = v % 10 + '0';
        v /= 10;
    }
    if(i == 0)
        s[i++] = '0';
    s[i] = '\0';
 
    j=0;
    i--;
    while(j < i) {
        temp = s[j];
        s[j] = s[i];
        s[i] = temp;
        j++;
        i--;
    }
}
 
int main()
{
 
    int t;
    scanf("%d", &t);
    while(t--) {
        __uint128_t ans = 0;
        char s[66];
        ULL a, b, c, d;
        scanf("%llu%llu%llu%llu", &a, &b, &c, &d);
        ans += a;
        ans += b;
        ans += c;
        ans += d;
        myitoa(ans, s);
        printf("%s\n", s);
    }
 
    return 0;
}
 

Python、Java解法(代码更简洁):HDU6225 Little Boxes【大数 Python、Java】

猜你喜欢

转载自blog.csdn.net/fyy_lufan/article/details/81138911