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

九度OJ 1119 Integer Inquiry

2016-08-09 18:58 375 查看
题目描述:

    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.)

输入:

    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.
输出:

    Your program should output the sum of the VeryLongIntegers given in the input.
样例输入:
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0

样例输出:
370370367037037036703703703670

题目意思是实现多个大整数相加。一直认为九度OJ上的题目出的意思都不是很明确,或者说不严谨。

我刚开始以为几个整数因为存在前导0,所以长度都一样,后来发现理解错了。这里的长度是可以不一样的。

我的思路是,每次输入一个str,就把它加到result中,最后输出result的值。输出的时候要把前导0去掉。还有如果两个00相加,结果是0,要把这时的0输出出来。

还有一点要注意,在每次把str加到result中时,最高位如果大于9,要把它进到高位去,以防出现溢出。

#include <iostream>
#include <cstring>
using namespace std;

int result[101];

void add(string str){ //实现将str加到result中
int len = str.length();
int i = 0;
for(i=0;i<len;i++){
int temp = result[100-i] + str[len-1-i] - '0';
result[100-i] = temp % 10;
result[100-i-1] += temp / 10;
}
while(result[100-i] > 9){ //将最高位的多位数化为个位数,
int temp = result[100-i];
result[100-i] = temp % 10;
result[100-i-1] += temp / 10;
i++;
}
}

int main(){
string str;
memset(result,0,sizeof(result));
while(cin>>str){
if(str == "0")
break;
else{
add(str);
}
}
bool flag = true;
int count = 0;
for(int i=0;i<101;i++){
if(result[i] == 0 && flag){ //把前导0去掉
count ++;
continue;
}
else{
flag = false;
cout<<result[i];
}
}
if(count == 101)
cout<<0<<endl; //表示0和0相加
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: