結果
問題 |
No.287 場合の数
|
ユーザー |
![]() |
提出日時 | 2017-06-18 13:23:23 |
言語 | C90 (gcc 12.3.0) |
結果 |
AC
|
実行時間 | 1 ms / 5,000 ms |
コード長 | 543 bytes |
コンパイル時間 | 362 ms |
コンパイル使用メモリ | 21,760 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-01 19:52:10 |
合計ジャッジ時間 | 1,560 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 22 |
コンパイルメッセージ
main.c: In function ‘run’: main.c:11:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 11 | scanf("%d",&n); | ^~~~~~~~~~~~~~
ソースコード
#include<stdio.h> #include<stdlib.h> typedef long long int ln; #define MIN(a,b) ((a)<(b)?(a):(b)) #define POS(i,j) ((i)*(max+1)+(j)) void run(void){ int n; scanf("%d",&n); const int m=8; const int max=6*n; ln *dp; dp=(ln *)calloc((max+1)*(m+1),sizeof(ln)); dp[POS(0,0)]=1; int i,j,k; for(i=1;i<=m;i++){ for(j=MIN(max,(i-1)*n);j>=0;j--){ for(k=0;k<=n &&k<=max-j;k++){ dp[POS(i,j+k)]+=dp[POS(i-1,j)]; } } } printf("%lld\n",dp[m*(max+1)+max]); return; } int main(void){ run(); return 0; }