ACM题目Integer Inquiry问题

yjjlyyj151 2011-01-27 10:43:06
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1292

下面是我的代码,在杭电的网站上能过,这里就不能过,请各位指点一下,变量赋得有点搞脑子,请见谅。


#include<iostream>
#include<string.h>
#include<math.h>
#include<malloc.h>
#include<algorithm>
#include<vector>
#include<string>
#include<map>
#include<set>
using namespace std;
int main()
{

int c,k=0,i,j,maxle,max;
scanf("%d\n",&c);
while(k<c)
{
char add[105];
int sum[101]={0},w=0; //sum表是和
maxle=0;
max=0;
while(cin>>add)
{
int ad[101]={0},f[101]={0};//ad表示输入的数,f表示是否进位
if(strcmp(add,"0")==0)//如果输入的是0
{
if(w==0) //这W表示前面有没有输入过大于的数,如果没有就说明只输入了0
{
sum[0]=0;
maxle=1;
}
break;
}
w=1;
if(strlen(add)>maxle) //maxle是最后输出时的上限
maxle=strlen(add);
for(i=strlen(add)-1,j=0;i>=0;i--,j++)
ad[j]=add[i]-'0'; //把字符变成数字
max=max>j?max:j; //相加也要有上限,这个值是原来max的和现在ad是的长度比,谁大谁就等于max
for(i=0;i<max;i++)
{
if(sum[i]+ad[i]+f[i]>=10)
{
sum[i]=sum[i]+ad[i]+f[i]-10;
f[i+1]=1;
}
else
sum[i]=sum[i]+ad[i]+f[i];
}
if(f[i]==1)//如果都相加完后,而f[i]还有进位,那么使sum[i]=1
{
sum[i]=1;
maxle++; //因为maxle最后输出要用,所以要加1
}
}
for(i=maxle-1;i>=0;i--)
cout<<sum[i];
cout<<endl;
k++;
if(k==c)
break;
else
cout<<endl;
}
}


...全文
283 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjjlyyj151 2011-01-28
  • 打赏
  • 举报
回复
谢谢LS几位。。
mstlq 2011-01-28
  • 打赏
  • 举报
回复
一眼望去,至少在max的设置上有问题

楼主试试这组测试数据吧……

1

9
9
9
0

慢慢调试吧,加油^_^
Qyee 2011-01-27
  • 打赏
  • 举报
回复
#include<string.h>
#include<math.h>
#include<malloc.h>
#include<algorithm>
#include<vector>
#include<string>
#include<map>
#include<set>

都是用不到的头文件。。。估计是超过文件大小了。。哈哈哈哈哈哈哈哈哈哈哈哈哈
打酱油。。。。。。。的路过
yjjlyyj151 2011-01-27
  • 打赏
  • 举报
回复
唉,还是wrong answer。。不知道哪里不对
qq120848369 2011-01-27
  • 打赏
  • 举报
回复
那就不知道了,头文件....那么多,夸张了.

g++,c++都试试。
bluejays 2011-01-27
  • 打赏
  • 举报
回复
scanf("%d\n",&c);
scanf后面的格式字符串一般不用\n,可以改成scanf("%d",&c);
或者直接cin >> c;

if(strlen(add)>maxle)
strlen的返回值是无符号的,把无符号数和有符号数做比较,有时候会出现一些意想不到的问题。我编译的时候有一个警告。不过本题里面应该不会影响运行结果

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧