【CYH-02】NOIp考砸后虐题赛:转换式:题解

mac2022-06-30  103

这道题真的不难吧。

@AKEE@AKEE@AKEE 大佬所说,此题的确可以将n推广到一般情况。

但题面还是良心的只到了N<=4N<=4N<=4

以目前的题目来看,简单模拟即可。

分别弄N=1,2,3,4N=1,2,3,4N=1,2,3,4的情况判断就行。

下面奉上std

代码:

#include<bits/stdc++.h> #define L 1000001 using namespace std; long long int a[100001],b,c,d,e,x=0,xx=2; long long int mo=10000029; int main() { int n,t,N; cin>>N; if(N==1) { cin>>n>>b; a[0]=1; for(int i=1; i<=n; i++) { a[i]=a[i-1]*b%mo; } if(a[n]>=0)cout<<a[n]; else cout<<a[n]+mo; return 0; } if(N==2) { cin>>n>>b>>c; a[1]=b; a[2]=a[1]*a[1]-c*xx; a[2]%=mo; if(a[n]!=x) { cout<<a[n]<<endl; } for(int j=3; j<=n; j++) { if(a[j]!=x)continue; a[j]=a[j-1]*b-a[j-2]*c; a[j]%=mo; } if(a[n]>=0)cout<<a[n]; else cout<<a[n]+mo; return 0; } if(N==3) { cin>>n>>b>>c>>d; a[0]=3; a[1]=b; a[2]=b*b-2*c; a[2]%=mo; for(int i=3; i<=n; i++) { a[i]=b*a[i-1]-c*a[i-2]+d*a[i-3]; a[i]%=mo; } if(a[n]>=0)cout<<a[n]; else cout<<a[n]+mo; return 0; } if(N==4) { cin>>n>>b>>c>>d>>e; a[0]=4; a[1]=b; a[2]=b*b-2*c; a[2]%=mo; a[3]=b*(a[2]-c)+3*d; a[3]%=mo; for(int i=4; i<=n; i++) { a[i]=b*a[i-1]-c*a[i-2]+d*a[i-3]-e*a[i-4]; a[i]%=mo; } if(a[n]>=0)cout<<a[n]; else cout<<a[n]+mo; return 0; } return 0; }

转载于:https://www.cnblogs.com/vercont/p/10210030.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)