結果
問題 | No.1339 循環小数 |
ユーザー |
|
提出日時 | 2021-01-16 05:27:03 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 157 ms / 2,000 ms |
コード長 | 1,741 bytes |
コンパイル時間 | 3,698 ms |
コンパイル使用メモリ | 192,376 KB |
最終ジャッジ日時 | 2025-01-17 21:17:07 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 36 |
ソースコード
/*** author: otera**/#include<bits/stdc++.h>using namespace std;#define int long longtypedef long long ll;typedef long double ld;const int inf=1e9+7;const ll INF=1LL<<60;#define rep(i, n) for(int i = 0; i < n; ++ i)#define per(i,n) for(int i=n-1;i>=0;i--)#define Rep(i,sta,n) for(int i=sta;i<n;i++)typedef pair<int, int> P;typedef pair<ll, ll> LP;#define fr first#define sc second#define all(c) c.begin(),c.end()template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }ll modpow(ll a, ll n, ll m) {if(n == 0) return 1LL;ll ret = modpow(a * a % m, n / 2, m);if(n & 1) ret *= a;return ret % m;}void solve() {int n; cin >> n;while(n % 2 == 0) n /= 2;while(n % 5 == 0) n /= 5;if(n == 1) {cout << 1 << "\n";return;}int phi = 1;int n_ = n;for(int i = 2; i * i <= n_; ++ i) {if(n_ % i == 0) {int co = 0;while(n_ % i == 0) {++ co;n_ /= i;}rep(j, co - 1) phi *= i;phi *= (i - 1);}}if(n_ != 1) phi *= (n_ - 1);int ans = phi;for(int k = 1; k * k <= phi; ++ k) {if(phi % k == 0) {if(modpow(10, k, n) == 1) {chmin(ans, k);}if(modpow(10, phi / k, n) == 1) {chmin(ans, phi / k);}}}cout << ans << "\n";}signed main() {ios::sync_with_stdio(false);cin.tie(0);//cout << fixed << setprecision(20);int t; cin >> t; rep(i, t)solve();// solve();return 0;}