結果
問題 | No.1629 Sorting Integers (SUM of M) |
ユーザー |
|
提出日時 | 2021-07-30 20:57:49 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 31 ms / 2,000 ms |
コード長 | 3,539 bytes |
コンパイル時間 | 2,124 ms |
コンパイル使用メモリ | 195,048 KB |
最終ジャッジ日時 | 2025-01-23 10:40:19 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 14 |
ソースコード
//GIVE ME AC!!!!!!!!!!!!!!!!!//#pragma GCC target("avx")//#pragma GCC optimize("O3")//#pragma GCC optimize("unroll-loops")#include<bits/stdc++.h>#define ll long long#define ld long double#define floatset() fixed<<setprecision(15)#define all(n) n.begin(),n.end()#define rall(n) n.rbegin(),n.rend()#define rep(i, s, n) for (ll i = s; i < (ll)(n); i++)#define pb push_back#define eb emplace_back#define max_(a) *max_element(all(a))#define min_(a) *min_element(all(a))#define INT(...) int __VA_ARGS__;scan(__VA_ARGS__)#define LL(...) ll __VA_ARGS__;scan(__VA_ARGS__)#define STR(...) string __VA_ARGS__;scan(__VA_ARGS__)#define CHR(...) char __VA_ARGS__;scan(__VA_ARGS__)#define DBL(...) double __VA_ARGS__;scan(__VA_ARGS__)#define LD(...) ld __VA_ARGS__;scan(__VA_ARGS__)using namespace std;using vl=vector<ll>;using vi=vector<int>;using vs=vector<string>;using vc=vector<char>;using vvl=vector<vl>;using P=pair<ll,ll>;using vvc=vector<vc>;using vd=vector<double>;using vp=vector<P>;using vb=vector<bool>;const int dx[8]={1,0,-1,0,1,-1,-1,1};const int dy[8]={0,1,0,-1,1,1,-1,-1};const ll inf=2e18;const ll MOD=1000000007;const ll mod=998244353;const double pi=acos(-1);template<typename T1,typename T2 >ostream &operator<<(ostream&os,const pair<T1,T2>&p) {os<<p.first<<" "<<p.second;return os;}template<typename T1,typename T2>istream &operator>>(istream&is,pair<T1,T2>&p) {is>>p.first>>p.second;return is;}template<typename T>ostream &operator<<(ostream&os,const vector<T>&v) {for(int i=0;i<(int)v.size();i++) {os<<v[i]<<(i+1!=v.size()?" ":"");}return os;}template<typename T>istream &operator>>(istream&is,vector<T>&v) {for(T &in:v)is>>in;return is;}void scan(){}template<class Head,class... Tail>void scan(Head&head,Tail&... tail) {cin>>head;scan(tail...);}template<class T>void print(const T &t) { cout << t << '\n'; }template<class Head, class... Tail>void print(const Head &head, const Tail &... tail) {cout << head << ' ';print(tail...);}template<class... T>void fin(const T &... a) {print(a...);exit(0);}template<typename T>ll sum_(vector<T>&v){ll res=0;for(auto &e:v)res+=e;return res;}template<typename T1,typename T2>inline bool chmax(T1&a,T2 b){return a<b&&(a=b,true);}template<typename T1,typename T2>inline bool chmin(T1&a,T2 b){return a>b&&(a=b,true);}ll fac[300100],inv[300100],facinv[300100];void init(){fac[0]=1;fac[1]=1;inv[1]=1;facinv[0]=1;facinv[1]=1;for(int i=2;i<=300000;i++){fac[i]=(fac[i-1]*i)%MOD;inv[i]=MOD-inv[MOD%i]*(MOD/i)%MOD;facinv[i]=facinv[i-1]*inv[i]%MOD;}}ll COM(ll n,ll k){return fac[n]*(facinv[k]*facinv[n-k]%MOD)%MOD;}long long modpow(long long a, long long n, long long m) {long long res = 1;while (n > 0) {if (n & 1) res = res * a % m;a = a * a % m;n >>= 1;}return res;}ll modinv(ll a,ll m){ll b=m,x=1,y=0;while(b>0){x-=y*(a/b);swap(x,y);a=a%b;swap(a,b);}x=x%m;if(x>=0){return x;}else{return x+m;}}int main(){LL(n);vl cnt(9);scan(cnt);ll ans=0;vl a(9,0);init();rep(i,0,9){ll m=n-1;ll now=1;if(cnt[i]==0)continue;cnt[i]--;rep(j,0,9){now*=COM(m,cnt[j]);m-=cnt[j];now%=MOD;}cnt[i]++;a[i]=now*(i+1)%MOD;}rep(i,0,n)ans+=modpow(10,i,MOD);ans%=MOD;//cout<<ans<<endl;ll now=sum_(a);now%=MOD;//cout<<now<<endl;fin(ans*now%MOD);}