結果
| 問題 |
No.25 有限小数
|
| コンテスト | |
| ユーザー |
mudbdb
|
| 提出日時 | 2015-07-17 05:10:58 |
| 言語 | C90 (gcc 12.3.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 5,000 ms |
| コード長 | 1,002 bytes |
| コンパイル時間 | 402 ms |
| コンパイル使用メモリ | 21,632 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-15 21:11:20 |
| 合計ジャッジ時間 | 1,058 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 |
コンパイルメッセージ
main.c: In function ‘main’:
main.c:31:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
31 | scanf("%lld", &N);
| ^~~~~~~~~~~~~~~~~
main.c:32:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
32 | scanf("%lld", &M);
| ^~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
long long int gcd(long long int a, long long int b)
{
long long int r;
long long int ans;
if (a < b) {
r = b % a;
while (r) {
b = a;
a = r;
r = b % a;
}
ans = a;
} else if (a > b) {
r = a % b;
while (r) {
a = b;
b = r;
r = a % b;
}
ans = b;
} else {
ans = a;
}
return ans;
}
int main()
{
long long int N;
long long int M;
scanf("%lld", &N);
scanf("%lld", &M);
long long int Q = gcd(N, M);
N /= Q;
M /= Q;
int pow2;
for (pow2=0; M%2==0; pow2++) {
M/=2;
}
int pow5;
for (pow5=0; M%5==0; pow5++) {
M/=5;
}
int ans;
if (M != 1) {
ans = -1;
goto END;
}
int i;
while (N%10 == 0) N/=10;
ans = N % 10;
if (pow2 < pow5) {
for (i=0; i<pow5-pow2; i++) {
ans *= 2;
ans %= 10;
}
} else if (pow2 > pow5) {
for (i=0; i<pow2-pow5; i++) {
ans *= 5;
ans %= 10;
}
}
END:
;
printf("%d\n", ans);
return 0;
}
mudbdb