結果
問題 |
No.25 有限小数
|
ユーザー |
|
提出日時 | 2025-05-16 18:37:32 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 863 bytes |
コンパイル時間 | 1,820 ms |
コンパイル使用メモリ | 195,408 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-05-16 18:37:36 |
合計ジャッジ時間 | 3,016 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 31 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); unsigned long long N,M; cin >> N >> M; auto g = gcd(N,M); N /= g; M /= g; auto m = M; while(M%2 == 0) M /= 2; while(M%5 == 0) M /= 5; if(M != 1){cout << "-1\n"; return 0;} swap(m,M); while(N%10 == 0) N /= 10; while(M%10 == 0) M /= 10; if(M == 1) cout << N%10 << endl; else if(M%2 == 0){ while(N%2 == 0) N /= 2; cout << N%10*5%10 << endl; } else{ while(N%5 == 0) N /= 5; int log5 = 0; while(M%5 == 0) log5++,M /= 5; log5 %= 4; if(log5 == 0) cout << N%10*6%10 << endl; if(log5 == 1) cout << N%10*2%10 << endl; if(log5 == 2) cout << N%10*4%10 << endl; if(log5 == 3) cout << N%10*8%10 << endl; } }