結果
問題 |
No.1339 循環小数
|
ユーザー |
|
提出日時 | 2021-01-16 09:36:26 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,231 bytes |
コンパイル時間 | 2,114 ms |
コンパイル使用メモリ | 192,236 KB |
最終ジャッジ日時 | 2025-01-17 21:22:13 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 10 RE * 5 TLE * 21 |
ソースコード
/** * author: shu8Cream * created: 15.01.2021 23:09:42 **/ #include <bits/stdc++.h> using namespace std; #define rep(i,n) for (int i=0; i<(n); i++) #define all(x) (x).begin(), (x).end() using ll = long long; using P = pair<int,int>; using vi = vector<int>; using vvi = vector<vi>; int junkan(int n) { int m=1; // 剰余を保持する変数(初期値1) int s=0; // 循環節の開始位置 int t=0; // 循環節の終了位置 int*list=(int*)calloc(n-1,sizeof(int)); // リストの初期化 while (true) { // mが剰余リストにある場合はループ終了 for(s=0;list[s];s++) if(m==list[s]) goto END; // 剰余リストになかった場合は、終端に追加 list[s]=m; // 次の剰余を計算 m=(m*10)%n; // 割り切れる場合はループ終了 if(m==0)goto END; t++; } END: free(list); // リストの解放 if(t-s==0) return 1; else return t-s; // 結果を出力 } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int t; cin >> t; while(t--){ int n; cin >>n; int a = junkan(n); cout << a << endl; } }