Loading

【题解】Codeforces[CF675A] Infinite Sequence

我用的是:分类讨论+暴力

其中分类讨论中,我用了一种namespace名命名空间。如果:

  • \(c = 0\)

    \(a == b\) 时,输出 \(YES\) 否则 \(NO\)

  • \(c < 1\)

    列举所有的等差数列数字,当列举到 \(b\) 时:\(YES\), 因为 \(c\) 为负数,所以越加数越小,所以当当前列举的数已经 \(<\) \(b\) 时:\(NO\)

  • \(c > 1\)

    列举所有的等差数列数字,当列举到 \(b\) 时:\(YES\), 因为 \(c\) 为正数,所以越加数越大,所以当当前列举的数已经 \(>\) \(b\) 时:\(NO\)

所以代码自然而然的就写出来啦!(我才不告诉你我WA多少次)

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring> 
using namespace std;
int a, b, c, flag; 
namespace c0
{
	void sovle()
	{
		if (a == b)//当a = b时,标记
			flag = 1;
		else flag = 0;//否则,标记
	}
}
namespace c1//名命名 :当c > 1时,进行一波操作
{
	void sovle()
	{
		while (1)
		{
			if (a == b)//当b在这个等差数列里时
			{
				flag = 1;//标记
				return;
			}
			if (a > b)//如果b不存在于这个等差数列
			{
				flag = 0;//如果大于,标记
				return;
			}
			a += c;
		}
	}
}
namespace c_1//名命名 :当c < 1时,进行另一波操作
{
	void sovle()
	{
		while (1)
		{
			if (a == b)
			{
				flag = 1;
				break;
			}
			if (a < b)//如果小于
			{
				flag = 0;//标记
				break;
			}
			a += c;
		}
	}
}
int main()
{
	cin >> a >> b >> c;//输入
	if (c == 0) c0::sovle();//调用名空间
	if (c > 0) c1::sovle();
	if (c < 0) c_1::sovle();
	if (flag == 1) cout << "YES";//输出
	if (flag == 0) cout << "NO";
	puts("");//换行
	return 0;
}

posted @ 2020-07-22 19:46  AgrumeStly  阅读(179)  评论(0编辑  收藏  举报