POJ 1053 Integer Inquiry && HDOJ 1047 Integer Inquiry (大数加法)

题目链接(POJ):http://poj.org/problem?id=1503

题目链接(HDOJ):http://acm.hdu.edu.cn/showproblem.php?pid=1047

Integer Inquiry

Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 30856   Accepted: 12007

Description

One of the first users of BIT‘s new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers.

``This supercomputer is great,‘‘ remarked Chip. ``I only wish Timothy were here to see these results.‘‘ (Chip moved to a new apartment, once one became available on the third floor of the Lemon Sky apartments on Third Street.)

Input

The input will consist of at most 100 lines of text, each of which contains a single VeryLongInteger. Each VeryLongInteger will be 100 or fewer characters in length, and will only contain digits (no VeryLongInteger will be negative).

The final input line will contain a single zero on a line by itself.

Output

Your program should output the sum of the VeryLongIntegers given in the input.

Sample Input

123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0

Sample Output

370370367037037036703703703670

Source

East Central North America 1996

题意:求n个大数之和

题解; 大数加法模板题——POJ和HDU上格式出处的要求稍有不同——HDOJ上的描述好混乱。

AC代码(POJ)

#include<iostream>
#include<cstring>
#include<string>
#define maxn 300
using namespace std;
int numx[maxn],numy[maxn],n;
string str,tmp;
string Add(string x,string y){
    string res="";
    memset(numx,0,sizeof(numx));
    memset(numy,0,sizeof(numy));
    int lenx=x.size(),leny=y.size();
    int maxlen=lenx>leny ? lenx:leny;
    for(int i=0;i<lenx;i++)numx[lenx-i-1]=x[i]-'0';
    for(int i=0;i<leny;i++)numy[leny-i-1]=y[i]-'0';
    for(int i=0;i<=maxlen;i++){
        numx[i]+=numy[i];
        if(numx[i]>9){
            numx[i+1]+=numx[i]/10;
            numx[i]%=10;
        }
    }
    int i=maxlen+2;
    for(;i>0&&!numx[i];)i--;
    for(;i>=0;i--)res+=numx[i]+'0';
    return res;
}
int main()
{
    string sum="0";
    while(cin>>str&&str!="0")
    sum=Add(sum,str);
    cout<<sum<<endl;
    return 0;
}

AC代码(HDU):

#include<iostream>
#include<cstring>
#include<string>
#define maxn 300
using namespace std;
int numx[maxn],numy[maxn],n;
string str,tmp;
string Add(string x,string y){
    string res="";
    memset(numx,0,sizeof(numx));
    memset(numy,0,sizeof(numy));
    int lenx=x.size(),leny=y.size();
    int maxlen=lenx>leny ? lenx:leny;
    for(int i=0;i<lenx;i++)numx[lenx-i-1]=x[i]-'0';
    for(int i=0;i<leny;i++)numy[leny-i-1]=y[i]-'0';
    for(int i=0;i<=maxlen;i++){
        numx[i]+=numy[i];
        if(numx[i]>9){
            numx[i+1]+=numx[i]/10;
            numx[i]%=10;
        }
    }
    int i=maxlen+2;
    for(;i>0&&!numx[i];)i--;
    for(;i>=0;i--)res+=numx[i]+'0';
    return res;
}
int main()
{
    while(cin>>n){
        while(n--){
                string sum="0";
            while(cin>>str&&str!="0"){
                sum=Add(sum,str);
            }
            cout<<sum<<endl;
            if(n)cout<<endl;
        }
    }
    return 0;
}

【转载请注明出处】

作者:MummyDing

出处:http://blog.csdn.net/mummyding/article/details/43567439

时间: 2024-12-10 20:14:15

POJ 1053 Integer Inquiry && HDOJ 1047 Integer Inquiry (大数加法)的相关文章

HDOJ 1047 Integer Inquiry

JAVA睑板.... Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12042    Accepted Submission(s): 3037 Problem Description One of the first users of BIT's new supercomputer was Chip D

POJ 1053 Integer Inquiry (大数加法,还是Java大法好)

Integer Inquiry Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 32674   Accepted: 12789 Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he

HDUJ 1047 Integer Inquiry

Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12426    Accepted Submission(s): 3123 Problem Description One of the first users of BIT's new supercomputer was Chip Diller. He e

[底层] 为什么Integer.MIN_VALUE-1会等于Integer.MAX_VALUE

Integer.MIN_VALUE-1 = Integer.MAX_VALUE Integer.MAX_VALUE+1 = Integer.MIN_VALUE 实际上这里是计算机底层的位运算法则问题[1] 计算机底层采用了补码来进行加减乘除的运算,好处是符号位参与运算. 举上面两个例子来说明问题. Integer.MIN_VALUE:  $10000000000000000000000000000000$ Integer.MAX_VALUE: $0111111111111111111111111

HDU - 1047 - Integer Inquiry (大数高精度)

Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 13969    Accepted Submission(s): 3523 Problem Description One of the first users of BIT's new supercomputer was Chip Diller. He e

HDU 1047.Integer Inquiry【多个大数相加】【高精度】【8月25】

Integer Inquiry Problem Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers. ``This supercomputer is great,

hdu 1047 Integer Inquiry(高精度数)

Problem Description Oneof the first users of BIT's new supercomputer was Chip Diller. He extended hisexploration of powers of 3 to go from 0 to 333 and he explored taking varioussums of those numbers. ``This supercomputer is great,'' remarked Chip. `

HDU 1047 [Integer Inquiry] 高精度 格式

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1047 题目大意:T组数据.每组给出n个大数,输出他们的和 关键思想:高精度,格式控制 代码如下: #include <iostream> #include <memory.h> using namespace std; int a[102][110]; int ans[110]; int cnt=0; bool flag;//处理前导零 void solve(){ int sum,c=

HDU 1047 Integer Inquiry 大数相加 string解法

本题就是大数相加,题目都不用看了. 不过注意的就是HDU的肯爹输出,好几次presentation error了. 还有个特殊情况,就是会有空数据的输入case. #include <stdio.h> #include <vector> #include <string.h> #include <algorithm> #include <iostream> #include <string> #include <limits.h