BZOJ3713: [PA2014]Iloczyn

Posted Star_Feel

tags:

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

【传送门:BZOJ3713


简要题意:

  给出一个数,判断这个数能否是两个斐波那契数列的数的乘积


题解:

  水题,因为斐波那契数列增长得很快,所以很快就能达到10^9的级别

  所以取个50(应该取多了一点),然后O(2500)做就行了


参考代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
LL f[51];
int main()
{
    int T;
    scanf("%d",&T);
    f[0]=0;f[1]=1;
    for(int i=2;i<=50;i++) f[i]=f[i-1]+f[i-2];
    while(T--)
    {
        int x;
        scanf("%d",&x);
        if(x==0)
        {
            printf("TAK\n");
            continue;
        }
        bool bk=false;
        for(int i=1;i<=50;i++)
        {
            for(int j=i;j>=1;j--)
            {
                if(f[i]*f[j]==LL(x))
                {
                    printf("TAK\n");
                    bk=true;break;
                }
            }
            if(bk==true) break;
        }
        if(bk==false) printf("NIE\n");
    }
    return 0;
}

 

以上是关于BZOJ3713: [PA2014]Iloczyn的主要内容,如果未能解决你的问题,请参考以下文章

bzoj3713 [PA2014]Iloczyn

PA2013BZOJ3733Iloczyn

bzoj3733 [Pa2013]Iloczyn

BZOJ 3733 [Pa2013]Iloczyn 模拟爆搜

[PA 2014]Iloczyn

[Pa2013]Iloczyn