結果
問題 | No.1629 Sorting Integers (SUM of M) |
ユーザー | kotatsugame |
提出日時 | 2021-07-30 20:36:24 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 6 ms / 2,000 ms |
コード長 | 1,282 bytes |
コンパイル時間 | 764 ms |
コンパイル使用メモリ | 73,216 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-15 22:27:43 |
合計ジャッジ時間 | 1,521 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 14 |
コンパイルメッセージ
a.cpp:9:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
ソースコード
#line 1 "a.cpp" #include<iostream> #include<atcoder/modint> using namespace std; using mint=atcoder::modint1000000007; #line 1 "/home/kotatsugame/library/math/combination.cpp" #include<vector> template<typename T> struct combination{ vector<T>fac,invfac; combination(size_t N=0):fac(1,1),invfac(1,1) { make_table(N); } void make_table(size_t N) { if(fac.size()>N)return; size_t now=fac.size(); N=max(N,now*2); fac.resize(N+1); invfac.resize(N+1); for(size_t i=now;i<=N;i++)fac[i]=fac[i-1]*i; invfac[N]=1/fac[N]; for(size_t i=N;i-->now;)invfac[i]=invfac[i+1]*(i+1); } T factorial(size_t n) { make_table(n); return fac[n]; } T P(size_t n,size_t k) { if(n<k)return 0; make_table(n); return fac[n]*invfac[n-k]; } T C(size_t n,size_t k) { if(n<k)return 0; make_table(n); return fac[n]*invfac[n-k]*invfac[k]; } T H(size_t n,size_t k) { if(n==0)return k==0?1:0; return C(n-1+k,k); } }; #line 6 "a.cpp" combination<mint>C; int N; int c[9]; main() { cin>>N; for(int i=0;i<9;i++)cin>>c[i]; mint ans=0; mint T=0,p=1; for(int i=0;i<N;i++) { T+=p; p*=10; } for(int i=0;i<9;i++)if(c[i]>0) { mint now=c[i]*C.factorial(N-1); ans+=now*(i+1); } for(int i=0;i<9;i++)ans/=C.factorial(c[i]); ans*=T; cout<<ans.val()<<endl; }