PAT乙级(Basic Level)练习题 NowCoder数列

题目描述
NowCoder最近在研究一个数列:

  • F(0) = 7
  • F(1) = 11
  • F(n) = F(n-1) + F(n-2) (n≥2)
    他称之为NowCoder数列。请你帮忙确认一下数列中第n个数是否是3的倍数。

输入描述:
输入包含多组数据。
每组数据包含一个整数n,(0≤n≤1000000)。

输出描述:
对应每一组输入有一行输出。
如果F(n)是3的倍数,则输出“Yes”;否则输出“No”。

输入例子:

0
1
2
3
4
5

输出例子:

No
No
Yes
No
No
No

\color{red}解题思路:

 i = 0    7    NO
 i = 1    11    NO
 i = 2    18    YES
 i = 3    29    NO
 i = 4    47    NO
 i = 5    76    NO
 i = 6    123    YES
 i = 7    199    NO
 i = 8    322    NO
 i = 9    521    NO
 i = 10    843    YES
 i = 11    1364    NO
 i = 12    2207    NO

首先得出的结论是i是偶数(i % 2 == 0),接着把i / 2,发现是1、3、5、7、9…,因此可得出i / 2的结果是奇数,最终优化为i % 4 == 2

\color{red}代码实现:

#include <iostream>
using namespace std;

int main(int argc, const char * argv[]) {
    int number = 0;
    while (scanf("%d", &number) != - 1) {
        if (number % 4 == 2) {
            printf("Yes\n");
        } else {
            printf("No\n");
        }
    }
    return 0;
}

在这里插入图片描述

发布了1005 篇原创文章 · 获赞 269 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/104641461