結果
問題 | No.2441 行列累乗 |
ユーザー | arafathq9 |
提出日時 | 2023-08-25 21:28:04 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 9,483 bytes |
コンパイル時間 | 2,418 ms |
コンパイル使用メモリ | 213,300 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-06 15:45:14 |
合計ジャッジ時間 | 2,987 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 1 ms
6,940 KB |
testcase_02 | AC | 2 ms
6,944 KB |
testcase_03 | AC | 2 ms
6,944 KB |
testcase_04 | AC | 2 ms
6,944 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,944 KB |
testcase_08 | AC | 2 ms
6,944 KB |
testcase_09 | AC | 2 ms
6,940 KB |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | AC | 2 ms
6,944 KB |
testcase_13 | AC | 1 ms
6,944 KB |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | AC | 2 ms
6,940 KB |
ソースコード
/* █████ ██████ █████ ███████ █████ ████████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███████ ██████ ███████ █████ ███████ ██ ███████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣶⣶⣶⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀ ⠀⣀⠀⠀⠀⢀⣠⣤⣤⣤⣄⣀⠀⠀⠀⠀⠀⠀⢸⠿⣿⣿⣿⣿⣿⠟⢿⢀⣠⣴⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣶⣀⠀ ⢀⣘⣷⢻⣶⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣷⣶⣾⠀⠈⢻⣿⡿⠁⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠛⠹⢿⣿⣧⣟⠛⠀ ⠈⠿⠿⣿⡿⠻⠟⠛⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣀⣀⣿⣦⣀⣴⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⢠⡿⠉⠛⣷⡀ ⠀⠀⠀⣽⡇⠀⠀⠀⠀⠀⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠘⠃⠀⠀⠈⠁ ⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⢻⠿⠿⠟⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣷⡿⡿⢿⣿⣿⠀⠀⣿⣿⣿⣿⣷⣿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢾⣿⣶⣿⢿⡄⢠⣿⣿⣾⣿⣾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⢀⣴⣶⣶⣶⣶⣤⣤⣤⣄⣀⠀⠀⢻⣿⣿⣿⠃⠘⣿⣿⣿⣿⣿⠀⠀⣀⣤⣤⣶⣶⣶⣶⣾⣿⣦⡀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣼⣿⣿⣿⠀⠀⢸⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⢿⣿⣿⣿⣿⣿⠿⠿⠛⠛⠿⣿⣿⣿⣿⣿⠿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣿⣆⠀⠀⠀⣰⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣦⠀⣴⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⡉⢉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ */ #include<bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> using namespace std; #define FAST ios_base::sync_with_stdio(false); #define FAST_INPUT cin.tie(0); #define FAST_OUTPUT cout.tie(0); #define ll long long #define ld long double #define vi vector<int> #define vll vector<long long> #define vpll vector<pair<long long,long long>> #define pll pair<ll,ll> #define gcd __gcd #define S string #define inf 1e18 #define minf INT_MIN #define lmax LLONG_MAX #define pb push_back #define ff first #define ss second #define f(i,a,n) for(long long int i=a;i<n;i++) #define g(i,a,n) for(long long int i=a;i>=n;i--) #define w(t) int t; cin>>t; f(case_num,1,t+1) #define odd(n) (n&1) #define even(n) !(n&1) #define endl "\n" #define all(x) x.begin(),x.end() #define yes() cout<<"YES"<<endl #define no() cout<<"NO"<<endl #define no1() cout<<-1<<" " #define ans(case_num,ans)cout<< "Case #" << case_num << ": " << ans << endl; const int N=1e5+5; #define Mod 1934917635 #define mod 998244353 //calculating factorial of a number ll factorial(ll n) { ll answer=1; while(n--) { answer*=n+1; answer%=Mod; } return answer; } //power of two numbers using binary exponentiation ll power(ll a,ll b) { if(b==0) return 1; ll res=power(a,b/2); if(odd(b)) { return (a*res*res); } else { return (res*res); } } //Modulo inverse of a number ll modulo_inverse(ll n) { return power(n,Mod-2); } //combinatorics formula ll ncr(ll n,ll r) { if (r==0 || n==0) { return 1; } ll fac[n+1]; fac[0]=1; f(i,1,n+1) { fac[i]=(fac[i-1]*i)%Mod; } return (fac[n]*modulo_inverse(fac[r])%Mod*modulo_inverse(fac[n-r])%Mod)%Mod; } //number of digits in a number ll digits(ll n) { ll ct=0; while(n) { ct++; n/=10; } return ct; } //number of digits in binary form ll b_digits(ll n) { if(!n) { return 1; } ll ct=0; while(n) { ct++; n/=2; } return ct; } //primes using seive upto 1e5 vector<ll> seive() { vector<bool>isprime(N,true); isprime[0]=isprime[1]=false; f(i,2,N+1) { if(isprime[i]) { for(ll j=2*i;j<=N;j+=i) { isprime[j]=0; } } } vector<ll> prime; f(i,2,N+1) { if(isprime[i]) { prime.pb(i); } } return prime; } //bit array for the fenwick tree ll bit[N]={0}; //fenwick tree update void fenwick(ll ind,ll x,ll n) { for(;ind<=n;ind+=(ind&(-ind))) { bit[ind]+=x; } } //fenwick tree retrieval ll fenwick_sum(ll ind1) { ll i=ind1; ll ans=0; while(i) { ans+=bit[i]; i-=(i&(-i)); } return ans; } ll segment_tree[N]={0}; void build(ll ind,ll start,ll end,vll &v) { if(start==end) { segment_tree[ind]=v[end-1]; return; } ll mid=(start+end)/2; build(2*ind,start,mid,v); build(2*ind+1,mid+1,end,v); segment_tree[ind]=min(segment_tree[2*ind],segment_tree[2*ind+1]); } ll an(ll ind,ll a,ll b,ll x,ll y) { if(x<a&&y<a||x>b&&y>b) { return inf; } if(a>=x&&b<=y) { return segment_tree[ind]; } ll mid=(a+b)/2; ll p=an(2*ind,a,mid,x,y); ll q=an(2*ind+1,mid+1,b,x,y); return min(p,q); } void update(ll ind,ll start,ll end,ll x,ll u) { if(x<start&&x<end||x>start&&x>end) { return; } if(x==start&&x==end) { segment_tree[ind]=u; return; } if(start==end) { return; } ll mid=(start+end)/2; update(2*ind,start,mid,x,u); update(2*ind+1,mid+1,end,x,u); segment_tree[ind]=min(segment_tree[2*ind],segment_tree[2*ind+1]); } //SIGMA N ll sigma(ll n) { return (n*(n+1))/2; } //SQUARE ROOT OF A NUMBER ll sq(ll n) { ll ans=0; ll i=0; ll j=sqrt(n)+4; while(i<=j) { ll mid=i+(j-i)/2; if(mid*mid>n) { j=mid-1; } else { i=mid+1; ans=mid; } } return ans; } //SUM OF DIGITS ll sum(ll n) { ll ct=0; while(n) { ct+=(n%10); n/=10; } return ct; } void func(vector<vector<ll>>a,vector<vector<ll>>b) { } int main() { FAST; FAST_INPUT; FAST_OUTPUT; vector<vector<ll>>dp(2,vector<ll>(2,0)); f(i,0,2) { f(j,0,2) { cin>>dp[i][j]; } } vector<vector<ll>>dp1=dp; dp1[0][0]=dp[0][0]*dp[0][0]+dp[0][1]*dp[1][0]; dp1[0][1]=dp[0][0]*dp[0][1]+dp[0][1]*dp[1][1]; dp1[1][0]=dp[1][0]*dp[0][0]+dp[1][1]*dp[0][1]; dp1[1][1]=dp[1][0]*dp[0][1]+dp[1][1]*dp[1][1]; vector<vector<ll>>dp2=dp1; dp2[0][0]=dp1[0][0]*dp[0][0]+dp1[0][1]*dp[1][0]; dp2[0][1]=dp1[0][0]*dp[0][1]+dp1[0][1]*dp[1][1]; dp2[1][0]=dp1[1][0]*dp[0][0]+dp1[1][1]*dp[0][1]; dp2[1][1]=dp1[1][0]*dp[0][1]+dp1[1][1]*dp[1][1]; f(i,0,2) { f(j,0,2) { cout<<dp2[i][j]<<" "; } cout<<endl; } }