BOJ-1612-玩的1
必要な知識
に近づく
n
の倍数では、1
からなる数の中で最小の桁数しか出力できません.ない場合は-1
を出力します.不可能な場合、
1
のみからなる数は、約2
および5
である.したがって、nが入力されると、2
または5
に分割されると、-1
が出力される.1
のみからなる倍数を解く場合、1111
を確認して*10+1
を行い、11111
を生成して計算すると、1
のみからなる倍数の大きさが大きくなりすぎる.1
のみからなる倍数を格納する変数は、n
を使用してモジュール化された演算を継続し、数字が大きすぎることを回避します.動的計画法でよく用いられる方法はモジュール化演算であるが,この方法は考えるまでに長い時間がかかる.
コード(C+)
#include <iostream>
using namespace std;
int main() {
int n, ans = 1, tmp = 1; cin >> n;
if (n % 2 == 0 || n % 5 == 0) {
cout << "-1" << "\n";
return 0;
}
while ((tmp % n) != 0) {
ans += 1;
tmp = (tmp % n) * 10 + 1;
}
cout << ans << "\n";
return 0;
}
結果
Reference
この問題について(BOJ-1612-玩的1), 我々は、より多くの情報をここで見つけました https://velog.io/@hschoi1104/BOJ-1612-가지고-노는-1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol