您的位置:首页 > 产品设计 > UI/UE

Integer Inquiry

2014-02-02 13:55 190 查看
过年后就自己开始想做题了,可是题目是英文,还是不太理解题意,就不用说是自己做了,所以会先在网上自己把答案搜出来,然后再去理解,所以先在开始处于原来的状态了。看到题目的时候根本想不到主要考虑的是什么,看到答案后有时候还是不理解。

Integer Inquiry
Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K(Java/Other)
Total Submission(s) : 7   Accepted Submission(s) : 2
Font: Times NewRoman | Verdana | Georgia

Font Size: ← →
Problem Description
One of the first users of BIT's new supercomputer wasChip Diller. He extended his exploration of powers of 3 to go from 0 to 333 andhe explored taking various sums of those numbers.

``This supercomputer is great,'' remarked Chip. ``I only wish Timothy were hereto see these
4000
results.'' (Chip moved to a new apartment, once one becameavailable 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 be100 or fewer characters in length, and will only contain digits (noVeryLongInteger
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 theVeryLongIntegers given in the input.

This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followedby N input blocks. Each input block is in the format indicated in the problemdescription. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line betweenoutput blocks.
Sample Input
1
 
 
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
Sample Output
370370367037037036703703703670
这个题主要解决的是:首先是把输入的数的位数相同,若不同前面补0
#include<stdio.h>

#include<string>

#include<iostream>

usingnamespace std;

 

//高精度加法

//只能是两个正数相加

stringadd(string str1,string str2)//高精度加法

{

    string str;

 

    int len1=str1.length();

    int len2=str2.length();

    //前面补0,弄成长度相同

    if(len1<len2)

    {

        for(int i=1;i<=len2-len1;i++)

           str1="0"+str1;

    }

    else

    {

       for(int i=1;i<=len1-len2;i++)

           str2="0"+str2;

    }

    len1=str1.length();

    int cf=0;

    int temp;

    for(int i=len1-1;i>=0;i--)

    {

        temp=str1[i]-'0'+str2[i]-'0'+cf;

        cf=temp/10;

        temp%=10;

        str=char(temp+'0')+str;

    }

    if(cf!=0) str=char(cf+'0')+str;

    return str;

}

 

 

intmain()

{

    int T;

    scanf("%d",&T);

    while(T--)

    {

        string sum="0";

        string str1;

        while(cin>>str1)

        {

            if(str1=="0")break;

            sum=add(sum,str1);

        }

        cout<<sum<<endl;

        if(T>0)cout<<endl;

    }

return 0;

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: