我正在尝试Timus Online Judge question #1493, "One Step from Happiness":
Vova在第13条路线的电车上买了一张机票,并计算了机票号码的前三位和后三位数的总和(数字有六位数)。事实证明,总和完全不同。 “我离幸福只有一步,”Vova想,“无论是上一张票还是下一张票都是幸运的。”他是对的吗?输入
输入包含票证编号。该数字由六位数组成,其中一些数字可以为零。保证Vova计数正确,即前三位数的总和与最后三位数之和完全相同。
输出
如果Vova是正确的,则输出“是”,否则输出“否”。
样品
input output -------------------- 715068 Yes 445219 No 012200 Yes
提示
所有电车票都有六位数。如果票证的前三位数等于其后三位数的总和,则该票证被认为是幸运的。
这是我的Visual C(2010)格式的代码。
#include <stdio.h>
int main()
{
int arr[5],arr1[5],arr2[5],i,a=0,b=0,n,x=0,y=0;
printf("Enter number");
scanf("%d",&n);
x=n+1;
y=n-1;
while(n>0)
{
for(i=5;i>=0;i--)
{
arr[i]=n%10;
n=n/10;
}
}
a=( arr[0]+arr[1]+arr[2]);
b=(arr[3]+arr[4]+arr[5]);
if((a-b==1)||(a-b==-1))
{
while(x>0)
{
for(i=5;i>=0;i--)
{
arr1[i]=x%10;
x=x/10;
}
}
while(y>0)
{
for(i=5;i>=0;i--)
{
arr2[i]=y%10;
y=y/10;
}
}
if ((arr1[0]+arr1[1]+arr1[2]==arr1[3]+arr1[4]+arr1[5]) ||
(arr2[0]+arr2[1]+arr2[2]==arr2[3]+arr2[4]+arr2[5]))
{ printf("Yes");}
else
{ printf("No");}
}
else
{
printf("No");
}
return 0;
}
以上代码是我提交的代码,并在Timus Online Judge中收到错误的答案。它的提交格式是Visual C(2010)。我在计算机上使用Dev-C ++,因此我在计算机上运行的代码如下:
#include <stdio.h>
#include <conio.h>
main()
{
int arr[5],arr1[5],arr2[5],i,a=0,b=0,n,x=0,y=0;
printf("Enter number");
scanf("%d",&n);
x=n+1;
y=n-1;
while(n>0)
{
for(i=5;i>=0;i--)
{
arr[i]=n%10;
n=n/10;
}
}
a=( arr[0]+arr[1]+arr[2]);
b=(arr[3]+arr[4]+arr[5]);
if((a-b==1)||(a-b==-1))
{
while(x>0)
{
for(i=5;i>=0;i--)
{
arr1[i]=x%10;
x=x/10;
}
}
while(y>0)
{
for(i=5;i>=0;i--)
{
arr2[i]=y%10;
y=y/10;
}
}
if ((arr1[0]+arr1[1]+arr1[2]==arr1[3]+arr1[4]+arr1[5]) ||
(arr2[0]+arr2[1]+arr2[2]==arr2[3]+arr2[4]+arr2[5]))
{ printf("Yes");}
else
{ printf("No");}
}
else
{
printf("No");
}
getch();
}
我没有收到任何编译错误。代码在我的Dev-C ++编译器上完美运行,也给了我正确的输出。问题是当我以Visual C格式提交此代码时,他们告诉我这是一个错误的答案。
答案 0 :(得分:0)
演习说明:
Output "Yes" if Vova is right and "No" otherwise.
您的程序打印Enter number
,练习不要求。尝试删除它。
另外,为了您自己和我们的理智,我强烈建议您更好地格式化您的程序。在一个美观,格式良好的程序中查找错误要容易得多。有关如何使代码更易读和干净的提示,您可以转到CodeReview.SE。