首页 新闻 会员 周边

南阳理工74题

0
[待解决问题]

acm 南阳理工 74题怎么做啊

#include <iostream>
using namespace std;
int main()
{
int i;
char a[3], b[3];
int c[3], d[3];
while((cin>>a>>b) && ((a[0] - '0')||(b[0] - '0')))
{
int count, d;
count = 0;
d = 0;
for(i = 0;i<3; i++)
{
c[i] = a[i] - '0';
d[i] = b[i] - '0';
}
for(i = 2;i>=0; i--)
{
if((c[i] + d[i] + d)/10 == 1)
{count ++ ; d ++ ;}
}
cout<<count<<endl;
}
return 0;
}

 

为什么我的不对?

邵琼的主页 邵琼 | 菜鸟二级 | 园豆:204
提问于:2014-03-07 10:57
< >
分享
所有回答(1)
-1

假设你上面是对的

for(i = 2;i>=0; i--)//这个地方也不对,因为在第三位的时候d会等于2然后两边相加只要等于8就会被进位,d不应该这样加
{
  if((c[i] + d[i] + d)/10 == 1)
  {count ++ ; d ++ ;}

  if((c[i]+d[i]+(count>0?1:0))>10){count++;}这样也不对,第一位进位了.第二位没进第三位等于9时也会被算成进位

  if((c[i]+d[i]+flag)>10){count++;flag=1}else{flag=0}//这样应该就没问题了``

}

c[1]+d[1]

吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-07 11:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册