結果

問題 No.389 ロジックパズルの組み合わせ
ユーザー furu_tuww
提出日時 2016-07-08 23:16:17
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 39 ms / 2,000 ms
コード長 828 bytes
コンパイル時間 392 ms
コンパイル使用メモリ 56,540 KB
実行使用メモリ 5,504 KB
最終ジャッジ日時 2024-10-13 06:40:50
合計ジャッジ時間 3,055 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 99
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:37:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   37 |   scanf("%d",&m);
      |   ~~~~~^~~~~~~~~

ソースコード

diff #
プレゼンテーションモードにする

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
#define mod 1000000007
ll mf[11111111];
ll fact(ll n){
if(mf[n]) return mf[n];
ll ret = 1;
for(ll i = 1; i <= n; i++){
ret *= i;
ret %= mod;
}
return mf[n] = ret;
}
ll inv(ll x,ll m){
ll ret = 1;
ll k = x;
for(ll i = m-2; i > 0; i>>=1){
if(i&1){
ret *= k;
ret %= m;
}
k *= k;
k %= m;
}
return ret;
}
int m;
int k;
int H[1111111];
int main(void){
scanf("%d",&m);
int sum = 0;
for(k = 0; scanf("%d",H+k)!=EOF; k++) sum += H[k];
if(sum == 0){
puts("1");
}else if(sum+k-1 > m){
puts("NA");
}else{
ll ans = 0;
ll x = m-(sum+k-1);
ans += fact(x+k)*inv(fact(x)*fact(k)%mod,mod)%mod;
ans %= mod;
printf("%lld\n",ans);
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0