求救,为什么蓝桥云赛a掉了但是洛谷这里a不掉
查看原帖
求救,为什么蓝桥云赛a掉了但是洛谷这里a不掉
1004193
Xing_Kong_C楼主2024/3/9 16:45

以下是代码,思路就是把每个位置要乘多少算出来然后把俩个答案分别算出来然后一减。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 500005
#define mod 1000000007
ll a[N],b[N],c[N],k,p,q;



int main ()
{
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);
    cin>>k>>p;
    for(int i=1;i<=p;i++)
    {
        cin>>a[i];
    }
    cin>>q;
    for(int i=1;i<=p;i++)
    {
        if(i>p-q)
        {
            cin>>b[i];
        }
    }
    for(int i=1;i<=p;i++)
    {
        c[i]=max(2ll,max(a[i],b[i])+1);
    }
    c[p+1]=1;
    for(int i=p;i>=1;i--)
    {
        c[i]*=c[i+1];
        c[i]%=mod;
    }


    ll res1=0,res2=0;

    for(int i=1;i<=p;i++)
    {
        res1+=a[i]*c[i+1];
        res1%=mod;
    }
    for(int i=1;i<=p;i++)
    {
        res2+=b[i]*c[i+1];
        res2%=mod;
    }

    cout<<(res1-res2+mod)%mod;
    return 0;
}

2024/3/9 16:45
加载中...