結果

問題 No.695 square1001 and Permutation 4
ユーザー eQe
提出日時 2024-10-10 02:32:39
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
MLE  
実行時間 -
コード長 3,878 bytes
コンパイル時間 5,755 ms
コンパイル使用メモリ 313,776 KB
実行使用メモリ 159,532 KB
最終ジャッジ日時 2024-10-10 02:32:47
合計ジャッジ時間 7,619 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 5 MLE * 7
権限があれば一括ダウンロードができます

ソースコード

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

#include<bits/stdc++.h>
#include<atcoder/all>
namespace my{
void main();
void solve();
}
int main(){my::main();}
namespace my{
#define eb emplace_back
#define LL(...) ll __VA_ARGS__;lin(__VA_ARGS__)
#define VL(n,...) vec<ll>__VA_ARGS__;setsize({n},__VA_ARGS__);lin(__VA_ARGS__)
#define FO(n) for(ll ij=0;ij<n;++ij)
#define FOR(i,...) for(auto[i,i##stop,i##step]=range(0,__VA_ARGS__);i<i##stop;i+=i##step)
#define fo(i,...) FO##__VA_OPT__(R)(i __VA_OPT__(,__VA_ARGS__))
#define fe(a,i,...) for(auto&&__VA_OPT__([)i __VA_OPT__(,__VA_ARGS__]):a)
using namespace std;
using ll=int64_t;
using ull=uint64_t;
auto range(bool s,ll a,ll b=1e18,ll c=1){if(b==1e18)b=a,(s?b:a)=0;return array{a-s,b,c};}
constexpr char nl=10;
constexpr char sp=32;
template<class V>concept vectorial=is_base_of_v<vector<typename V::value_type>,V>;
template<class T>struct core_type{using type=T;};
template<vectorial V>struct core_type<V>{using type=typename core_type<typename V::value_type>::type;};
template<class V>istream&operator>>(istream&i,vector<V>&v){fe(v,e)i>>e;return i;}
template<class V>ostream&operator<<(ostream&o,const vector<V>&v){fe(v,e)o<<e<<string(&e!=&v.back(),vectorial<V>?nl:sp);return o;}
template<class V>struct vec:vector<V>{
using vector<V>::vector;
vec(const vector<V>&v){this->reserve(v.size());fe(v,e)this->eb(e);}
vec&operator+=(const vec&u){vec&v=*this;fo(i,v.size())v[i]+=u[i];return v;}
vec&operator-=(const vec&u){vec&v=*this;fo(i,v.size())v[i]-=u[i];return v;}
vec&operator^=(const vec&u){this->insert(this->end(),u.begin(),u.end());return*this;}
vec operator+(const vec&u)const{return vec{*this}+=u;}
vec operator-(const vec&u)const{return vec{*this}-=u;}
vec operator^(const vec&u)const{return vec{*this}^=u;}
vec&operator++(){fe(*this,e)++e;return*this;}
vec&operator--(){fe(*this,e)--e;return*this;}
vec operator-()const{vec v=*this;fe(v,e)e=-e;return v;}
};
template<class T=ll,size_t n,size_t i=0>auto make_vec(const ll(&s)[n],T x={}){if constexpr(n==i+1)return vec<T>(s[i],x);else{auto X=make_vec<T,n,i+1
    >(s,x);return vec<decltype(X)>(s[i],X);}}
template<ll n,class...A>void setsize(const ll(&l)[n],A&...a){((a= make_vec(l,typename core_type<A>::type())),...);}
void io(){cin.tie(nullptr)->sync_with_stdio(0);cout<<fixed<<setprecision(15);}
void lin(auto&...a){(cin>>...>>a);}
template<char c=sp>void pp(const auto&...a){ll n=sizeof...(a);((cout<<a<<string(--n>0,c)),...);cout<<nl;}
struct modll{
static inline ll N=998244353;
ll a;
static void set_mod(ll N){modll::N=N;}
static ll mod(){return N;}
modll()=default;
modll(ll a):a((a%=N)<0?a+N:a){}
auto&operator+=(const modll&b){if(ull(a+=b.a)>=N)a-=N;return*this;}
auto&operator-=(const modll&b){if(ull(a+=N-b.a)>=N)a-=N;return*this;}
auto&operator*=(const modll&b){(a*=b.a)%=N;return*this;}
auto&operator/=(const modll&b){return*this*=b.inv();}
friend auto operator+(const modll&a,const modll&b){return modll{a}+=b;}
friend auto operator-(const modll&a,const modll&b){return modll{a}-=b;}
friend auto operator*(const modll&a,const modll&b){return modll{a}*=b;}
friend auto operator/(const modll&a,const modll&b){return modll{a}/=b;}
friend bool operator==(const modll&a,const modll&b){return a.a==b.a;}
auto operator-()const{return N-a;}
modll inv()const{
assert(gcd(a,N)==1);
ll a=this->a,b=N,u=1,v=0;
while(b)swap(u-=a/b*v,v),swap(a-=a/b*b,b);
return u;
}
ll val()const{return a;}
friend istream&operator>>(istream&i,modll&b){ull t;i>>t;b=t;return i;}
friend ostream&operator<<(ostream&o,const modll&b){return o<<b.val();}
};
template<class T>T mod(T a,T m){return(a%=m)<0?a+m:a;}
void main(){io();ll T=1;fo(T)solve();}
void solve(){
LL(N,K);
VL(K,a);
ll mod=100000000000000007LL;
modll::set_mod(mod);
vec<modll>dp(N);
dp[0]=1;
fo(i,N){
fo(j,K)if(i+a[j]<N)dp[i+a[j]]+=dp[i];
}
pp(dp[N-1]);
}}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0