結果
問題 | No.1035 Color Box |
ユーザー |
![]() |
提出日時 | 2020-04-25 22:01:27 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 59 ms / 2,000 ms |
コード長 | 2,224 bytes |
コンパイル時間 | 1,693 ms |
コンパイル使用メモリ | 162,572 KB |
実行使用メモリ | 34,688 KB |
最終ジャッジ日時 | 2024-11-30 17:41:21 |
合計ジャッジ時間 | 4,397 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 36 |
ソースコード
//#include <bits/stdc++.h>#include "bits/stdc++.h"using namespace std;typedef long long ll;//#include "boost/multiprecision/cpp_int.hpp"//typedef boost::multiprecision::cpp_int LL;typedef long double dd;#define i_7 (ll)(1E9+7)//#define i_7 998244353#define i_5 i_7-2ll mod(ll a){ll c=a%i_7;if(c>=0)return c;return c+i_7;}typedef pair<ll,ll> l_l;typedef pair<dd,dd> d_d;ll inf=(ll)1E16;#define rep(i,l,r) for(ll i=l;i<=r;i++)#define pb push_backll max(ll a,ll b){if(a<b)return b;else return a;}ll min(ll a,ll b){if(a>b)return b;else return a;}void Max(ll &pos,ll val){pos=max(pos,val);}//Max(dp[n],dp[n-1]);void Min(ll &pos,ll val){pos=min(pos,val);}void Add(ll &pos,ll val){pos=mod(pos+val);}dd EPS=1E-9;#define fastio ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);#define fi first#define se second#define endl "\n"#define SORT(v) sort(v.begin(),v.end())#define ERASE(v) v.erase(unique(v.begin(),v.end()),v.end())#define POSL(v,x) (lower_bound(v.begin(),v.end(),x)-v.begin())#define POSU(v,x) (upper_bound(v.begin(),v.end(),x)-v.begin())template<class T>inline bool chmax(T &a, T b) {if(a < b) {a = b;return true;}return false;}template<class T>inline bool chmin(T &a, T b) {if(a > b) {a = b;return true;}return false;}//////////////////////////ll po(ll i,ll p){if(p==0)return 1;else{i=mod(i);if(p==1)return i;if(p%2==0)return po(mod(i*i),p/2);return mod(i*po(i,p-1));}}ll bunbo(ll n){return po(n,i_5);}#define N 2000004ll kai[N];ll kai2[N];void calc(){kai[0]=1;kai2[0]=1;rep(i,1,N-1){kai[i]=mod(kai[i-1]*i);}kai2[N-1]=po(kai[N-1],i_5);for(ll i=N-2;i>=0;i--){kai2[i]=mod(kai2[i+1]*(i+1));}}ll comb(ll n,ll k){if(n<k)return 0;if(n==0)return 1;return mod(mod(kai[n]*kai2[n-k])*kai2[k]);}int main(){fastiocalc();ll n,m;cin>>n>>m;ll ans=0;for(ll i=m;i>=1;i--){ll res=comb(m,i);res=mod(res*po(i,n));if((i-m)%2==0)Add(ans,res);else Add(ans,-res);}cout<<mod(ans)<<endl;return 0;}