結果
| 問題 |
No.25 有限小数
|
| コンテスト | |
| ユーザー |
fiord
|
| 提出日時 | 2016-05-21 07:48:08 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 596 bytes |
| コンパイル時間 | 598 ms |
| コンパイル使用メモリ | 59,256 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-15 21:16:41 |
| 合計ジャッジ時間 | 1,346 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 |
ソースコード
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
#define rep(i,n) for(int i=0;i<n;i++)
ll gcd(ll a,ll b){
return a%b==0?b:gcd(b,a%b);
}
int main(){
ll n,m; cin>>n>>m;
ll g=gcd(n,m);
n/=g; m/=g;
ll mt=0,mf=0;
while(m%2==0){
m/=2;
mt++;
}
while(m%5==0){
m/=5;
mf++;
}
if(n%m!=0){
cout<<-1<<endl;
return 0;
}
while(n%10==0) n/=10;
n%=10000;
while(mt>mf){
if(n%2==0) n/=2;
else n*=5;
n%=10000;
mf++;
}
while(mt<mf){
if(n%5==0) n/=5;
else n*=2;
n%=10000;
mt++;
}
while(n%10==0) n/=10;
cout<<n%10<<endl;
return 0;
}
fiord