2017 ACM/ICPC Asia Regional Shenyang Online E number number number 题解
Posted cautx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017 ACM/ICPC Asia Regional Shenyang Online E number number number 题解相关的知识,希望对你有一定的参考价值。
分析:
当n=1时ans=4=f(5)-1;
n=2,ans=12=f(7)-1;
n=3,ans=33=f(9)-1;
于是大胆猜想ans=f(2*k+3)-1。
之后用矩阵快速幂求解f(n)即可,O(logn)。
AC code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 typedef vector<ll> vec; 5 typedef vector<vec> mat; 6 const ll M=998244353; 7 mat mul(mat& A,mat& B) 8 9 mat C(A.size(),vec(B[0].size())); 10 for(int i=0;i<A.size();i++) 11 for(int k=0;k<B.size();k++) 12 for(int j=0;j<B[0].size();j++) 13 C[i][j]=(C[i][j]+A[i][k]*B[k][j]) % M; 14 return C; 15 16 mat pow(mat A,ll n) 17 18 mat B(A.size(),vec(A.size())); 19 for(int i=0;i<A.size();i++) B[i][i]=1; 20 while(n) 21 22 if(n&1) B=mul(B,A); 23 A=mul(A,A); 24 n>>=1; 25 26 return B; 27 28 int main() 29 30 //freopen("input.txt","r",stdin); 31 ll k; 32 while(~scanf("%lld",&k)) 33 34 mat A(2,vec(2)); 35 A[0][0]=1;A[0][1]=1; 36 A[1][0]=1;A[1][1]=0; 37 A=pow(A,2*k+3); 38 printf("%lld\\n",A[1][0]-1); 39 40 return 0; 41
以上是关于2017 ACM/ICPC Asia Regional Shenyang Online E number number number 题解的主要内容,如果未能解决你的问题,请参考以下文章
2017 ACM/ICPC Asia Regional Beijing Online
2017 ACM/ICPC Asia Regional Qingdao Online
2017 ACM/ICPC Asia Regional Shenyang Online spfa+最长路
hdu6206 Apple 2017 ACM/ICPC Asia Regional Qingdao Online
HDU 6198(2017 ACM/ICPC Asia Regional Shenyang Online)
HDU - 6215 2017 ACM/ICPC Asia Regional Qingdao Online J - Brute Force Sorting