
Integer Inquiry
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11678 Accepted Submission(s): 2936
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 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.
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.
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
仅仅为了存一个高精度大数相加的模板
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <cstring>
#include <math.h>
#include <ctime>
using namespace std;
#define maxn 32768
void add(char a[],char b[],char back[])
{
int i,j,k,up,x,y,z,l;
char *c;
if (strlen(a)>strlen(b)) l=strlen(a)+; else l=strlen(b)+;
c=(char *) malloc(l*sizeof(char));
i=strlen(a)-;
j=strlen(b)-;
k=;up=;
while(i>=||j>=)
{
if(i<) x=''; else x=a[i];
if(j<) y=''; else y=b[j];
z=x-''+y-'';
if(up) z+=;
if(z>) {up=;z%=;} else up=;
c[k++]=z+'';
i--;j--;
}
if(up) c[k++]='';
i=;
c[k]='\0';
for(k-=;k>=;k--)
back[i++]=c[k];
back[i]='\0';
} int main()
{
int n;
scanf("%d",&n);
char a[maxn]="";
while(n--)
{
char b[maxn],c[maxn];
memset(b,'\0',sizeof(b));
memset(c,'\0',sizeof(c));
memset(a,'\0',sizeof(a));
a[]='';
while()
{
scanf("%s",b);
if(b[]=='')
break;
add(a,b,c);
strcpy(a,c);
memset(b,'\0',sizeof(b));
memset(c,'\0',sizeof(c));
}
if(n==)
printf("%s\n",a);
else
printf("%s\n\n",a); }
return ;
}