タイトルの説明
数値Kの2乗にNを掛けると、結果の最後の桁数がKに等しくなり、この数値は「N-自律型数値」と呼ばれます。
例えば×92 3 2 = 25392、及び端部92の25392は、ちょうど2つであるので、数92、3-地味です。
この質問では、特定の数が特定のNに関してN自律数であるかどうかを判断するプログラムを作成するように求められます。
入力形式
入力は、最初の行に正の整数
Mを示し、次の行は、検出される1000以下の正の整数Mを示します。
N-行Nで検出される各デジタル出力の自己同形数であり、スペースで区切られた最小のNK 2値である場合、出力形式。それ以外の場合、出力No
。
入力例
3
92 5 233
出力例
3 25392
1 25
なし
データ範囲
N <10、M <20
回答:
#include <iostream>
using namespace std;
bool check(int N, int K)
{
int d = 1;
while(d < 1e6)
{
if(N * K * K % d == K) return true;
d *= 10;
}
return false;
}
int main()
{
int K, M;
cin >> M;
while(M --)
{
cin >> K;
bool flag = false;
for (int N = 1; N < 10; N ++)
if(check(N, K))
{
flag = true;
cout << N << ' ' << N * K * K << endl;
break;
}
if(!flag) cout << "No" << endl;
}
return 0;
}