結果
問題 | No.3133 法B逆元 |
ユーザー |
![]() |
提出日時 | 2025-05-02 22:28:03 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 648 bytes |
コンパイル時間 | 470 ms |
コンパイル使用メモリ | 25,600 KB |
実行使用メモリ | 6,272 KB |
最終ジャッジ日時 | 2025-05-02 22:28:05 |
合計ジャッジ時間 | 1,765 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 21 |
コンパイルメッセージ
main.c: In function ‘main’: main.c:20:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 20 | scanf("%s %lld", s, &b); | ^~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<stdio.h> long long int exgcd(long long int a, long long int b) { if (b == 1 || b == -1) return 0; else return (1 - b * exgcd(b, -a % b)) / (a % b); } long long int gcd(long long int a, long long int b) { if (b == 0) return a; else return gcd(b, a % b); } char s[64]; int main() { long long int n, b; scanf("%s %lld", s, &b); long long int i; for (n = i = 0; s[i] != '\0'; i++) n = (10 * n + s[i] - '0') % b; if (b == 1) { printf("0\n"); return 0; } if (n == 0) { printf("NaN\n"); return 0; } if (gcd(n, b) > 1) { printf("NaN\n"); return 0; } printf("%lld\n", (exgcd(n, b) % b + b) % b); return 0; }