ABC 174 | C - Repsept

1210 단어 경업자tech

문제.


https://atcoder.jp/contests/abc174/tasks/abc174_c

생각


a_i는 i열로 다음과 같다.
a_i=
\begin{cases}
7 & (i=1)\\
10 a_{i-1}+7 & (i\geq 2)
\end{cases}
a_질문이 있는지 물어보세요.i 초과하기 쉽기 때문에long long 다른 표시 방법이 없음을 고려합니다.
a_i를 직접 처리하지 않더라도\mod7 상태에서 처리하는 것이 같기 때문에 그렇게 처리합니다.
그러면조만간 0,1i\leqK 범위에서 동일한 값을 반복합니다.반복되는 상황에서는 답이 없다. 코드 Tips, 병, 병;하지만 사용하지 않아도 코드를 줄일 수 있다#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; using ll = long long; using ld = long double; using uint = unsigned int; using ull = unsigned long long; const int MOD = 1e9 + 7; using mint = modint; int main() { ll K; cin >> K; mint::set_mod(K); mint a = 7; ll count = 1; if (a == 0) { cout << count << endl; return 0; } unordered_set<int> s; s.insert(a.val()); while (true) { count++; a = a * 10 + 7; if (a == 0) { cout << count << endl; return 0; } if (s.find(a.val()) != s.end()) { break; } s.insert(a.val()); } cout << -1 << endl; } 참고 자료

좋은 웹페이지 즐겨찾기