結果
| 問題 | No.3264 岩井数 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-22 16:21:06 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,626 bytes |
| コンパイル時間 | 835 ms |
| コンパイル使用メモリ | 87,596 KB |
| 実行使用メモリ | 19,016 KB |
| 最終ジャッジ日時 | 2025-11-22 16:21:14 |
| 合計ジャッジ時間 | 8,085 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 2 |
| other | TLE * 1 -- * 29 |
ソースコード
#include <iostream>
#include <vector>
using namespace std;
int GetDigit(int);
bool IsPalindromicNumber(int);
bool IsIwaiNumber(int);
int main()
{
// 入力
int input;
int cnt = 2;
cin >> input;
while (cnt <= 1000000000)
{
long long num = cnt * input;
if (num < 1000000000)
{
++cnt;
continue;
}
if (IsIwaiNumber(num) && num % input == 0)
{
cout << num << endl;
break;
}
++cnt;
}
return 0;
}
/// <summary>
/// 岩井数か判定し、返す
/// </summary>
/// <param name="input"></param>
bool IsIwaiNumber(int input)
{
// 奇数では回文数 + 9の岩井数の条件に当てはまらないので終了
if (GetDigit(input) % 2 == 1)
{
return false;
}
// 1桁目が9でなかったら岩井数ではないので終了
if (input % 10 != 9)
{
return false;
}
return IsPalindromicNumber(input / 10);
}
/// <summary>
/// 整数の桁数を取得する関数
/// </summary>
/// <param name="num">取得したい桁数の整数</param>
/// <returns>整数の桁数</returns>
int GetDigit(int num)
{
int digit = 1;
while ((num /= 10) != 0)
{
++digit;
}
return digit;
}
/// <summary>
/// 回文かどうか
/// </summary>
/// <param name="number">チェックしたい整数</param>
/// <returns>回文だったら true</returns>
bool IsPalindromicNumber(int number)
{
vector<int> v;
while (number > 0)
{
// 先頭に数字の1桁目を代入
v.push_back(number % 10);
number /= 10;
}
// 前半と後半を比較
int len = v.size();
for (int i = 0; i < len / 2; ++i)
{
if (v[i] != v[len - 1 - i])
{
return false;
}
}
return true;
}