結果
| 問題 |
No.25 有限小数
|
| コンテスト | |
| ユーザー |
ふーらくたる
|
| 提出日時 | 2016-07-30 17:34:45 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 970 bytes |
| コンパイル時間 | 616 ms |
| コンパイル使用メモリ | 59,956 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-06 21:20:02 |
| 合計ジャッジ時間 | 1,715 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 13 WA * 18 |
ソースコード
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef long long ll;
ll GCD(ll a, ll b) {
if (b == 0) return a;
else return GCD(b, a % b);
}
int main() {
ll N, M, gcd;
cin >> N >> M;
gcd = GCD(N, M);
N /= gcd;
M /= gcd;
// 素因数分解だと間に合わないので必要な2と5だけ用いる
int exp2 = 0, exp5 = 0;
while (N != 1) {
if (N % 2 == 0) {
N /= 2;
exp2++;
} else if (N % 5 == 0) {
N /= 5;
exp5++;
} else {
cout << -1 << endl;
return 0;
}
}
// 確実に下一桁が0以外の数字にするために
while (N % 10 == 0) {
N /= 10;
}
for (int i = 0; i < max(exp2, exp5) - exp2; i++) {
N = (N * 2) % 10;
}
for (int i = 0; i < max(exp2, exp5) - exp5; i++) {
N = (N * 5) % 10;
}
cout << (N % 10) << endl;
return 0;
}
ふーらくたる