1106 2019数列
把 2019 各个数位上的数字 2、0、1、9 作为一个数列的前 4 项,用它们去构造一个无穷数列,其中第 n(>4)项是它前 4 项之和的个位数字。例如第 5 项为 2, 因为 2+0+1+9=12,个位数是 2。
本题就请你编写程序,列出这个序列的前 n 项。
输入格式:
输入给出正整数 n(≤1000)。
输出格式:
在一行中输出数列的前 n 项,数字间不要有空格。
输入样例:
10
输出样例:
2019224758
思路:我们首先需要定义一个含有四个元素的数组,初始分别包含2,0,1,9四个元素,然后我们先判断一下,这个要输出的N是否小于或等于4,如果是,我们就直接顺着输出就不需要改动了,如果大于四,那么我们就循环替代这四个数就可以了,比如2+0+1+9=12,那么我们就用2代替掉第一个被挤下去的数字,即第一个元素,那么现在数列就变成0,1,9,2,不过再那个数组里面还是2,0,1,9的顺序,我们是循环替代,节省空间,不断输出,我们就能得到最终的结果。
该算法本人认为还是比较有优,如果有个更好的想法,欢迎q我!
代码如下(编译器是dev,语言是C语言—):
#include<stdio.h>
int a[4] = {2,0,1,9};
int N,i,j;
int main(){
scanf("%d",&N);
if(N<=4){
for(i = 1;i<=N;i++){
printf("%d",a[i-1]);
}
}else{
printf("2019");
for(i = 5;i<=N;i++){
j = (i -1)%4;
a[j] = (a[0]+a[1]+a[2]+a[3])%10;
printf("%d",a[j]);
}
}
printf("\n");
return 0;
}