結果
問題 | No.793 うし数列 2 |
ユーザー | ate |
提出日時 | 2019-11-23 06:20:19 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 3,253 bytes |
コンパイル時間 | 2,066 ms |
コンパイル使用メモリ | 200,712 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-11 06:46:29 |
合計ジャッジ時間 | 2,832 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,248 KB |
testcase_04 | AC | 2 ms
5,248 KB |
testcase_05 | AC | 2 ms
5,248 KB |
testcase_06 | AC | 2 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | AC | 2 ms
5,248 KB |
testcase_09 | AC | 2 ms
5,248 KB |
testcase_10 | AC | 2 ms
5,248 KB |
testcase_11 | AC | 2 ms
5,248 KB |
testcase_12 | AC | 2 ms
5,248 KB |
testcase_13 | AC | 1 ms
5,248 KB |
testcase_14 | AC | 2 ms
5,248 KB |
testcase_15 | AC | 2 ms
5,248 KB |
testcase_16 | AC | 2 ms
5,248 KB |
testcase_17 | AC | 2 ms
5,248 KB |
testcase_18 | AC | 2 ms
5,248 KB |
testcase_19 | AC | 2 ms
5,248 KB |
testcase_20 | AC | 2 ms
5,248 KB |
testcase_21 | AC | 2 ms
5,248 KB |
testcase_22 | AC | 1 ms
5,248 KB |
ソースコード
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(ll i=0;i<(n);++i) using ll = long long; using pll = pair<ll,ll>; constexpr ll INF = (1LL<<60); constexpr ll MOD = (1e9+7); //constexpr ll MOD = (998244353); template<class T> bool chmax(T &a,const T &b){if(a<b){a=b;return 1;}return 0;} template<class T> bool chmin(T &a,const T &b){if(a>b){a=b;return 1;}return 0;} void dump(){cout<<endl;} template<class T,class... Ts> void dump(T&& h, Ts&&... t){cout<<h<<", ";dump(forward<Ts>(t)...);} template<class T> istream &operator>>(istream&is,vector<T>&v){for(auto &elemnt:v)is>>elemnt;return is;} template<class T,class U> istream &operator>>(istream&is,pair<T,U>&p){is>>p.first>>p.second;return is;} template<class T>vector<T> make_vector(size_t a){return vector<T>(a);} template<class T, class... Ts>auto make_vector(size_t a, Ts... ts){return vector<decltype(make_vector<T>(ts...))>(a, make_vector<T>(ts...));} void solve1();void solve2(); int main(){ solve1(); return 0; } template<long long MOD> struct mod_int{ using ll = long long; ll val; constexpr mod_int():val(0){} constexpr mod_int(ll x)noexcept:val(x>=0?x%MOD:(MOD-(-x)%MOD)%MOD){} constexpr ll value()const noexcept{return val;} constexpr mod_int operator+(mod_int const& rhs){ return mod_int(*this)+=rhs; } constexpr mod_int operator-(mod_int const& rhs){ return mod_int(*this)-=rhs; } constexpr mod_int operator*(mod_int const& rhs){ return mod_int(*this)*=rhs; } constexpr mod_int operator/(mod_int const& rhs){ return mod_int(*this)/=rhs; } constexpr mod_int &operator+=(mod_int const& rhs)noexcept{ val += rhs.val; if(val>=MOD)val-=MOD; return *this; } constexpr mod_int &operator-=(mod_int const& rhs)noexcept{ if(val<rhs.val)val+=MOD; val-=rhs.val; return *this; } constexpr mod_int &operator*=(mod_int const& rhs)noexcept{ (val*=rhs.val)%=MOD; return *this; } constexpr mod_int &operator/=(mod_int rhs)noexcept{ *this*=rhs.inverse(); return *this; } constexpr bool operator==(mod_int const& rhs){ return val==rhs.val; } constexpr bool operator!=(mod_int const& rhs){ return !(val==rhs.val); } constexpr bool operator<(mod_int const& rhs){ return val<rhs.val; } constexpr bool operator>(mod_int const& rhs){ return val>rhs.val; } constexpr bool operator<=(mod_int const& rhs){ return !(val>rhs.val); } constexpr bool operator>=(mod_int const& rhs){ return !(val<rhs.val); } constexpr friend std::ostream &operator<<(std::ostream& os, mod_int const& mi){ return os<<mi.val; } friend std::istream &operator>>(std::istream& is, mod_int & mi){ ll t;is>>t; mi = mod_int<MOD>(t); return is; } constexpr mod_int inverse(){ ll a=val,b=MOD,u=1,v=0,t; while(b>0){ t=a/b; std::swap(a-=t*b,b); std::swap(u-=t*v,v); } return mod_int(u); } constexpr mod_int mpow(ll n)const{ mod_int res(1),e(*this); while(n){ if(n&1)res*=e; e*=e; n>>=1; } return res; } }; using mint = mod_int<1000000007>; void solve1(){ ll n; cin>>n; mint ten(10); mint ans = (ten.mpow(n)-mint(1))/mint(3); ans += ten.mpow(n); cout<<(ans)<<endl; }