結果
問題 |
No.502 階乗を計算するだけ
|
ユーザー |
![]() |
提出日時 | 2025-02-22 18:33:35 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 697 bytes |
コンパイル時間 | 8,751 ms |
コンパイル使用メモリ | 254,416 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2025-02-22 18:33:49 |
合計ジャッジ時間 | 10,342 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 11 WA * 41 |
ソースコード
#include <bits/stdc++.h> using namespace std; int k,xx,yy,ans,dx[10],dy[10],nm[10],res[10]; long long c(int m,int n){ long long num=1; for (int i=m-n+1;i<=m;i++) num*=i; for (int i=1;i<=n;i++) num/=i; return num; } int calc(){ int num=0,sum=1,id=k; for (int i=1;i<=k;i++) num+=res[i]; while (num){ sum*=c(num,res[id]); num-=res[id]; id--; } return sum; } void dfs(int id,int x,int y){ if (x==xx && y==yy ){ ans+=calc(); return; } if (id>k) return ; for (int i=0;i<=nm[id];i++){ res[id]=i; dfs(id+1,x+dx[id]*i,y+dy[id]*i); res[id]=0; } } signed main () { cin>>xx>>yy>>k; for (int i=1;i<=k;i++) cin>>dx[i]>>dy[i]>>nm[i]; dfs(1,0,0); cout<<ans; return 0; }