ABC 174 | C - Repsept
문제.
생각
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; } 참고 자료
Reference
이 문제에 관하여(ABC 174 | C - Repsept), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/wapa5pow/articles/abc174-c-c6e14b4c4db494abc339텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)