> 文档中心 > 【PAT (Basic Level) Practice】——【简单模拟】1106 2019数列

【PAT (Basic Level) Practice】——【简单模拟】1106 2019数列

文章目录

  • 一【题目难度】
  • 二【题目编号】
  • 三【题目描述】
  • 四【题目示例】
  • 五【解题思路】
  • 六【最终得分】
  • 七【代码实现】
  • 八【提交结果】

一【题目难度】

  • 乙级

二【题目编号】

三【题目描述】

  • 把 2019 各个数位上的数字 2、0、1、9 作为一个数列的前 4 项,用它们去构造一个无穷数列,其中第 n(>4)项是它前 4 项之和的个位数字。例如第 5 项为 2, 因为 2+0+1+9=12,个位数是 2。
  • 本题就请你编写程序,列出这个序列的前 n 项。

四【题目示例】

  • 输入格式:
    输入给出正整数 n(≤1000) n(≤1000)n1000

  • 输出格式:
    在一行中输出数列的前 n 项,数字间不要有空格。

  • 输入样例:
    10

  • 输出样例:
    2019224758
    题外话:这个数列中永远不会出现 2018,你能证明吗?

五【解题思路】

  • 这个题非常简单,只需要利用数组存储每个元素,首先将“2019”按位存入数组,后面只需要用f o r for for循环遍历每四个做和即可,需要注意题目要求只取个位数。最后输出即可,还要注意题目要求没有空格

六【最终得分】

  • 15分

七【代码实现】

#includeint main(){    int n,nums[1001] = {0};    scanf("%d",&n);    nums[1] = 2;    nums[2] = 0;    nums[3] = 1;    nums[4] = 9;    for(int i = 5;i<=n;i++)    { int temp = nums[i - 1] + nums[i - 2] + nums[i - 3] + nums[i - 4]; nums[i] = temp % 10;    }    for(int i = 1;i<=n;i++)    { printf("%d",nums[i]);    }    return 0;}

八【提交结果】

在这里插入图片描述