[C++]伯俊1990号:少数のパリンドロン


質問リンク


1990号:少数のパリンドロン

問題の概要


aからbまでは少数として,すべてのファリンドロン係数を出力しなければならない。

方法


aからbまでの数字を1つずつレコーダーかどうかをチェックし、小数点以下かどうかをチェックするようにアクセスすればTLEが得られます.Bの最高値は1億だが、時間は1秒しかない.
だから私も何度かTLEを受け取って、私が書いたコードに50000000と入力しました.結果はすぐに9989899に出力された.しかしその後しばらくは何も出力されず、-1が出力される.すなわち,MIN(b,9989899)MIN(b,9989899)MIN(b,9989899)MIN(b,998989899)を調べるだけでよい.

コード#コード#

#include <bits/stdc++.h>

using namespace std;

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int a, b;
	cin >> a >> b;

	for (int i = a; i <= min(b, 9989899); i++)
	{
		string str = to_string(i);

		bool flag = false;
		for (int j = 0; j < str.size() / 2; j++)
		{
			if (str[j] != str[str.size() - j - 1])
			{
				flag = true;
				break;
			}
		}

		if (flag)
			continue;

		for (int j = 2; j <= sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = true;
				break;
			}
		}

		if (!flag)
			cout << i << '\n';
	}

	cout << -1 << '\n';
	return 0;
}