HDU 6768 The Oculus

Posted grisaia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 6768 The Oculus相关的知识,希望对你有一定的参考价值。

The Oculus

问题描述:

A=∑ai*F[i]    B= ∑bi*F[i] 

C=A*B=∑ci*F[i] 

F[i]是斐波拉契序列,a[],b[],c[]是给的01数组。

由于故意将c[i]的一个数由1变成了0,现在改变的下标是

 

吐槽(没啥好讲的,知道循环节直接出)

这道题我真的我当时为什么不看啦!!!!!!

我上一场做了一个斐波拉契的题找过循环节1e9+9的1重复在16666..反正超过给定数组大小。

然后A*B=C那么我们只要先把A B C的值取模1e9+9,在循环c数组长度把0换成1一个个试。相等输出就完事了

我下来补题直接就过了。。好心伤。。。哎。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e6+10;
ll f[N];
int C[N];
const int mod = 1e9+9;
int main(){
    int t,n,m,z;
    f[0]=f[1]=1;
    for(int i=2;i<N-5;i++){
        f[i]=(f[i-1]+f[i-2])%mod;
    }
    scanf("%d",&t);
    while(t--){
        ll a=0,b=0,c=0;
        int p;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&p);
            if(p) a=(a+f[i])%mod;
        }
        scanf("%d",&m);
        for(int i=1;i<=m;i++){
            scanf("%d",&p);
            if(p) b=(b+f[i])%mod;
        }
        scanf("%d",&z);
        for(int i=1;i<=z;i++){
            scanf("%d",&p);
            C[i]=p;
            if(p) c=(c+f[i])%mod;
        }
        a=a*b%mod;
        int pos=0;
        for(int i=1;i<=z;i++){
            if(C[i]==0){
                if(a==(c+f[i])%mod){
                    pos=i;
                    break;
                }
            }
        }
        printf("%d
",pos);
    }
}

 

 

 

以上是关于HDU 6768 The Oculus的主要内容,如果未能解决你的问题,请参考以下文章

HDU4057 Rescue the Rabbit(AC自动机+状压DP)

2020 Multi-University Training Contest 2 [The Oculus]

unity错误android minimum api level must be set to 23 or higher for the oculus xr plugin

环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools(代码片段

maven web项目的web.xml报错The markup in the document following the root element must be well-formed.(代码片段

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段