XM21. 求数列第n项
描述
米兔从兔米那里了解到有一个无限长的数字序列 1, 2,3,3,4,4,4, 5,5,5,5,5 ...,(已知此数列有一定规律,现将这些数字按不同数值堆叠,相同值的数字在同一层)。米兔想知道这个数字序列的第n个数所在的那一层之前的所有层里共有多少个数。输入描述
n(n<=1e18)输出描述
第n个数所在的那一层之前的所有层里共有多少个数示例1
输入:
6
输出:
4
C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2021-09-19
#include<stdio.h> int main() { long long int a=0,b=1,c,n,sum=1; scanf("%lld",&n); while(sum<n) { c=a+b; a=b; b=c; sum=sum+c; } printf("%lld",sum-b); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2021-08-21
#include <stdio.h> int main(){ long long array[1000] = {0}; array[0] = 0; array[1] = 1; long long n; int i=2; long long sum=1; long long tmp; while(scanf("%lld",&n) != EOF){ if(n==1){ printf("0"); break; } while(i<1000){ array[i] = array[i-1]+ array[i-2]; tmp = sum; sum+= array[i]; if(sum >= n && tmp < n){ printf("%lld",tmp); break; } i++; } } return 0; }