結果
問題 |
No.1339 循環小数
|
ユーザー |
|
提出日時 | 2021-01-16 09:29:47 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,216 bytes |
コンパイル時間 | 2,516 ms |
コンパイル使用メモリ | 191,044 KB |
最終ジャッジ日時 | 2025-01-17 21:21:00 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 1 |
other | AC * 1 WA * 9 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>; void 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) cout << 1 << endl; else printf("%d\n", t-s); // 結果を出力 } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int t; cin >> t; while(t--){ int n; cin >>n; junkan(n); } }