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

这道题真的不难吧。

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

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

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

分别弄 N = 1 , 2 , 3 , 4 N=1,2,3,4 N=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;
}
全部评论

相关推荐

点赞 评论 收藏
分享
能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
面试官问:为什么不考研?该怎么回答啊😭我说现在的就业环境差到底了,还有就是我不想学数学,感觉面试官笑容都凝固了😢
DayDayNoBug的鲜芋球:我说的是“上学期其实尝试过去探索一些研究的方向,但感觉那些对我来说都没有很大的吸引力,相比起研究我可能更喜欢开发这种实践性的东西,它会让我觉得很有意思并且会为之深入进去”(虽然也不知这个回答怎么样哈哈哈哈哈哈)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务