Description
Vasya likes everything infinite. Now he is studying the properties of a sequence s, such that its first element is equal to a (s1 = a), and the difference between any two neighbouring elements is equal to c (si - si - 1 = c). In particular, Vasya wonders if his favourite integer b appears in this sequence, that is, there exists a positive integer i, such that si = b. Of course, you are the person he asks for a help.
Input
The first line of the input contain three integers a, b and c ( - 109 ≤ a, b, c ≤ 109) — the first element of the sequence, Vasya’s favorite number and the difference between any two neighbouring elements of the sequence, respectively.
Output
If b appears in the sequence s print “YES” (without quotes), otherwise print “NO” (without quotes).
Sample Input
Input
1 7 3
Output
YES
Input
10 10 0
Output
YES
Input
1 -4 5
Output
NO
Input
0 60 50
Output
NO
正确代码:
#include<iostream>
using namespace std;
int main(void)
{
int a, b, c;
cin>>a>>b>>c;
if(c == 0)
{
if(a == b)
cout<<"YES";
else
cout<<"NO";
}
else
{
if(((b-a)%c == 0) && (((b-a)>= 0 && c > 0)||((b-a)<= 0 && c < 0)))
cout<<"YES";
else
cout<<"NO";
}
return 0;
}
以下为错误代码段:
#include<stdio.h>
#include<iostream>
using namespace std;
int main(void)
{
long long a, b, c;
cin>>a>>b>>c;
if(c == 0 && a == b)
{
printf("YES\n");
}
else if(c == 0 && a != b)
{
printf("NO\n");
}
else
{
long long t;
t = (b-a)%c;
//cout<<t;
if(t == 0)
{
if((a > b && c < 0) || (a < b && c > 0 ))
{
printf("YES");
}
else
{
printf("NO");
}
}
else
{
printf("NO");
}
}
return 0;
}
个人认为两段代码,逻辑无差别,但是第二个就不对,,,请个位路过的朋友帮忙看看吧~