結果
| 問題 | No.502 階乗を計算するだけ |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2025-02-22 18:33:35 |
| 言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.89.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;
}
vjudge1