题目链接:点击打开题目
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 bappears 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.
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.
If b appears in the sequence s print "YES" (without quotes), otherwise print "NO" (without quotes).
1 7 3
YES
10 10 0
YES
1 -4 5
NO
0 60 50
NO
In the first sample, the sequence starts from integers 1, 4, 7, so 7 is its element.
In the second sample, the favorite integer of Vasya is equal to the first element of the sequence.
In the third sample all elements of the sequence are greater than Vasya's favorite integer.
In the fourth sample, the sequence starts from 0, 50, 100, and all the following elements are greater than Vasya's favorite integer.
题意:给出首项a,给出公差c,问b是否在这个等差数列里。
题解:
题目思维太缜密了,一点纰漏就要WA。
首先要判断a是否等于b,这里步漏掉就导致后面取余的时候出错。
然后对c = 0 特殊处理,要不会RE的。
然后再取余就行了。
代码如下:
#include <cstdio>
int main()
{
int a,b,c;
while (~scanf ("%d %d %d",&a,&b,&c))
{
if (a == b)
{
printf ("YES\n");
continue;
}
if (c == 0)
{
if (a == b)
printf ("YES\n");
else
printf ("NO\n");
}
else
{
int t1 = (b - a) % c;
int t2 = (b - a) / c;
if (t1 == 0 && t2 > 0)
printf ("YES\n");
else
printf ("NO\n");
}
}
return 0;
}