PAT NowCoder数列 详细题解 (思维水题)

最近准备打一次PAT试试, 之前感觉乙级题目也就那样, 现在一刷发现还是有不少很有难度的好题的

比如这一题, 看似很简单, 其实也蕴含了一点点思维技巧

如果仅仅用斐波那契数列来写递推的话, 一定会超时, 那么一般的水题就是找规律啦, icpc里一般水题也就是这样的题

首先我们考虑一下前两个7, 11这两个数 2*3+1, 3*3+2

那么下一个肯定就是5*3 + 3, 也就是题目中要求的3的倍数啦

那么我们对于每个数, 都只考虑他%3之后的数, 因为够3就可以忽略这个倍数了

那么可以发现:

也就是3的倍数只出现在 (i+2)%4==0时

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
#define ms(x, n) memset(x,n,sizeof(x));
typedef  long long LL;
const LL maxn = 1e6+10;


int main()
{
    int n;
    while(cin >> n){
        if((n+2)%4 == 0) cout << "Yes\n";
        else cout << "No\n";
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/a1097304791/article/details/83868437