hdu 1047 Integer Inquiry
2014-08-04 00:11
274 查看
Integer Inquiry
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12516 Accepted Submission(s): 3160
[align=left]Problem Description[/align]
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.)
[align=left]Input[/align]
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.
[align=left]Output[/align]
Your program should output the sum of the VeryLongIntegers 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 followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.
The output format consists of N output blocks. There is a blank line between output blocks.
[align=left]Sample Input[/align]
1
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
[align=left]Sample Output[/align]
370370367037037036703703703670
高精度加法
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
#define maxn 10001
class BigNum
{
public:
string num;
BigNum(string s = "")
{
num = s;
}
void input(string s)
{
num = s;
}
string add(string a)
{
string ans = "";
int len = max(a.length(),num.length());
while(a.length()<len+1) a = "0"+a;
while(num.length()<len+1) num = "0"+num;
for(int i=0;i<len+1;i++) ans += "0";
int cf = 0,tf;
for(int i=len;i>=0;i--)
{
tf = a[i]-'0' + num[i]-'0' + cf;
if(tf>=10)
{
cf = 1;
tf-=10;
ans[i] = tf +'0';
}
else
{
cf = 0;
ans[i] = tf + '0';
}
}
if(ans[0]=='0') ans.erase(0,1);
return ans;
}
string Mul(string s)
{
int len1 = s.length() , len2 = num.length();
int *ans = (int *)malloc(sizeof(int)*(len1+len2));
for(int i=0;i<len1+len2;i++) ans[i] = 0;
for(int i=0; i<len1; i++)
{
for(int j=0; j<len2; j++)
{
ans[i+j+1] += (s[i]-'0')*(num[j]-'0');
}
}
for(int i=len1+len2-1; i>=0; i--)
{
if(ans[i]>=10)
{
ans[i-1] += ans[i]/10;
ans[i] %=10;
}
}
string res;
res.resize(len1+len2);
for(int i=0; i<len1+len2; i++) res[i] = ans[i] + '0';
while(res[0]=='0' && res.size()>1)
{
res.erase(0,1);
}
free(ans);
return res;
}
};
int main()
{
int N;
cin >> N;
while( N--)
{
string ans = "0",s;
while(cin >> s && s!="0")
{
ans = BigNum(ans).add(s);
}
cout << ans << endl;
if(N) cout << endl;
}
return 0;
}
相关文章推荐
- HDU 1047 Integer Inquiry
- HDU 1047 Integer Inquiry
- HDU - 1047 - Integer Inquiry (大数高精度)
- HDU 1047 Integer Inquiry 多个大数相加
- HDU-1047-Integer Inquiry(Java大数水题 && 格式恶心)
- HDU-1047 Integer Inquiry Java
- hdu 1047 Integer Inquiry(高精度数)
- HDU 1047 Integer Inquiry -- java大法好
- HDU - 1047 Integer Inquiry
- JAVA hdu 1047 Integer Inquiry(高精度)
- hdu 1047 Integer Inquiry(JAVA)
- hdu 1047 Integer Inquiry(高精度数)
- HDU_1047 Integer Inquiry(高精度)
- hdu 1047 Integer Inquiry(大数加)
- HDU 1047 Integer Inquiry
- HDU 1047 Integer Inquiry
- HDU 1047 - Integer Inquiry
- HDU 1047--Integer Inquiry 【大数】
- HDU 1047 Integer Inquiry【大数】
- hdu 1047 Integer Inquiry