Timus Online Judge の質問 #1493、「幸福からの一歩」を実行しようとしています。
Vova は 13 番目のルートのトラムでチケットを購入し、チケットの番号 (数字は 6 桁) の最初の 3 桁と最後の 3 桁の合計を数えました。合計が正確に 1 異なることが判明しました。「私は幸福から一歩離れています」と Vova は考えました。彼は正しいですか?
入力
入力にはチケットの番号が含まれます。数値は 6 桁で構成され、その一部はゼロの場合があります。Vova が正しくカウントしたこと、つまり、最初の 3 桁の合計が最後の 3 桁の合計と正確に 1 異なることが保証されます。
出力
Vova が正しい場合は「はい」、そうでない場合は「いいえ」を出力します。
サンプル
input output -------------------- 715068 Yes 445219 No 012200 Yes
ヒント
すべてのトラムのチケットは正確に 6 桁です。最初の 3 桁の合計が最後の 3 桁の合計と等しい場合、チケットは幸運であると見なされます。
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 形式で提出したときに、間違った答えだと言われたときです。