【菜鸟求助】ACM题目:Integer Inquiry

OneofthefirstusersofBIT'snewsupercomputerwasChipDiller.Heextendedhisexplorationofpowe... 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

我的写的code:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char str[300];
int temp[300]={0};
int i,j,temptag=0,flag,p,tag=0,plus;
for(i=0;;i++)
{
p=1,plus=0,flag=0;
gets(str);
for(j=0;j<strlen(str);j++)
{
if(str[j]!='0')
{
flag=1;
break;
}
}//为了像输入0123这样的数不会跳出
if(flag==0)
{
if(temp[tag+1]%10!=0)
tag++;
for(j=tag;j>=0;j--)
cout<<temp[j];
cout<<endl;
break;
}//若输入0,判断输出
for(j=0;j<strlen(str);j++)
{
temp[j]+=str[strlen(str)-p]-'0';
if(temp[j]/10==1)
{
temp[j]=temp[j]%10;
plus=1;
}
else
plus=0;//判断是否进位
while(plus!=0)
{
temp[j+plus]+=1;
if(temp[j+plus]/10==1)
{
temp[j+plus]=temp[j+plus]%10;
plus++;
}
else
plus=0;
}//进位位是否再次进位
if(j>temptag&&temp[j]!=0)
temptag=j;//最后得到的数组会有几位
p++;
}
if(tag<temptag)
tag=temptag;//最后结果位数

}
return 0;
}
Wrong Answer。。。,但测试例子结果没问题,试了试其他的输入也没问题,各位高手帮忙啊,先在此谢过!!!
一楼你说的很对,谢谢你。但是我把
if(j>temptag&&temp[j]!=0)
temptag=j;
这句改成了
temptag=strlen(str)-1;
输入:9 90 999
会输出:1098
这个问题解决了。
但仍然是WA。。。很头疼,望指教
同样感谢2楼,目前还是比较关心我是怎么错的。
另外说下1楼,你的code输入sample input的数,输出好像是错的。
我用的VC6.0。
展开
 我来答
superdeck
2009-08-29 · TA获得超过120个赞
知道小有建树答主
回答量:47
采纳率:0%
帮助的人:0
展开全部
你的代码在判断最高位上有问题
比如
9
90
999
0

你的代码输出98
正确答案应该是1098

不好意思,我的代码是直接贴的下面这题AC的代码
http://acm.hdu.edu.cn/showproblem.php?pid=1047
这题一开始输入了例子个数
杠掉前三行就行了
我现在身边没有编译器,不过我估计你改了后无法避免输出前面的无效零
比如
0009
9
9
你会输出多余的0

这是我的代码

#include<stdio.h>
#include<string.h>
char s[200];
int t[200];
int n,l,i,j,ll;
bool first=1;
int main()
{
//scanf("%d",&n);
// while (n--)
{
// if (first) first=0; else

memset(t,0,sizeof t);
ll=1;
while (scanf("%s",s)==1)
{
l=strlen(s);
if (l==1&&s[0]==48) break;
for (i=l-1,j=0;i>=0;i--,j++)
{
t[j]+=s[i]-48;
if (t[j]>9)
{
t[j]-=10;
t[j+1]++;
}
}
while (t[j]>0)
{
if (t[j]>9)
{
t[j]-=10;
t[j+1]++;
}
j++;
}
if (j>ll) ll=j;
}
while (j>1&&t[j-1]==0) j--;
for (i=ll-1;i>=0;i--) printf("%d",t[i]);
printf("\n");
}
}
下沙怪才
2009-08-29 · TA获得超过233个赞
知道小有建树答主
回答量:646
采纳率:0%
帮助的人:264万
展开全部
要看AC的代码不 ?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式