結果
問題 | No.129 お年玉(2) |
ユーザー |
![]() |
提出日時 | 2015-07-14 22:32:57 |
言語 | C90 (gcc 12.3.0) |
結果 |
AC
|
実行時間 | 281 ms / 5,000 ms |
コード長 | 814 bytes |
コンパイル時間 | 773 ms |
コンパイル使用メモリ | 21,632 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-28 00:05:08 |
合計ジャッジ時間 | 5,532 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
コンパイルメッセージ
main.c: In function ‘main’: main.c:59:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 59 | scanf("%lld", &n); | ^~~~~~~~~~~~~~~~~ main.c:60:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 60 | scanf("%lld", &m); | ^~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h> long long int sum,n,m,r; int gcd( int a, int b){ if(b == 0){ return a; } if(a > b){ return gcd(b,a%b); }else{ return gcd(a,b%a); } } int C(int n, int r){ int i, j, tr; int tmp[10010]={0}; sum = 1; if( n < r ){return 0;} for(i=0;i<10010;i++){ tmp[i] = 1; } for(i=n;i>1;i--){ if( r == i ){break;} if( (n-r) == i ){break;} tmp[i] = i; } tr = n-i; for(i=2;i<=tr;i++){ int ti=i; for(j=2;j<=n;j++){ int g = gcd(tmp[j], ti); if( g != 1){ tmp[j] /= g; ti /= g; } if(ti == 1){ break; } } } for(i=1;i<=n;i++){ if(tmp[i] != 0){ sum = (sum*tmp[i])% 1000000000; } } return (int)(sum); } int main(void){ scanf("%lld", &n); scanf("%lld", &m); r = (n / 1000) % m; printf("%d\n", C((int)m,(int)r)); return 0; }