結果
問題 | No.389 ロジックパズルの組み合わせ |
ユーザー |
![]() |
提出日時 | 2016-07-08 22:48:17 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 38 ms / 2,000 ms |
コード長 | 1,249 bytes |
コンパイル時間 | 793 ms |
コンパイル使用メモリ | 96,596 KB |
実行使用メモリ | 5,712 KB |
最終ジャッジ日時 | 2024-10-13 06:14:07 |
合計ジャッジ時間 | 3,545 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 99 |
ソースコード
#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <cassert>#include <iostream>#include <algorithm>#include <stack>#include <queue>#include <vector>#include <set>#include <map>#include <bitset>#include <fstream>using namespace std;#define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)#define rep(i,n) repl(i,0,n)#define mp(a,b) make_pair(a,b)#define pb(a) push_back(a)#define all(x) (x).begin(),(x).end()#define dbg(x) cout<<#x"="<<x<<endltypedef long long ll;#define INF 1000000000#define MOD 1000000007// x^n modlong mod_pow(long x, long n, long mod){long res=1;while(n>0){if(n&1) res=res*x%mod;x=x*x%mod;n>>=1;}return res;}int main(){int m;cin>>m;vector<int> vec;int d;int sum=0;while(scanf("%d", &d)!=-1){vec.pb(d);sum+=d;}if(vec[0]==0){ cout<<1<<endl; return 0;}int a=vec.size(), b=m-sum-(vec.size()-1);if(b<0){ cout<<"NA"<<endl; return 0;}// dbg(a);dbg(b);long res=1;for(int i=b+1;i<=a+b;i++) res = res*i%MOD;long tmp=1;for(int i=1;i<=a;i++) tmp = tmp*i%MOD; // a!res = res*mod_pow(tmp, MOD-2, MOD)%MOD; // a!^(-1)cout<<res<<endl;return 0;}