题目描述
奶牛们发现了Fibonacci数列:1,1,2,3,5,8,13,21,34,…即下一个元素是前两个元素之和(这个数列是从1,1开始的)。
不幸的是,愚蠢的牛没有发明空格这个字符,因此把这个数列记录下来时,数之间没有标点或空格,就像这样:112358132134…
但是这是一个有趣的问题。给出数列的前两个元素(都是正整数且小于100),计算数列的第K位(1<=K<=500)。保证你遇到的数列中的每一个数都是一个长整型数。
输入格式:
单独的一行,有三个空格隔开的整数:cowfib数列的第一个数,cowfib数列的第二个数,K。
输出格式:
单独的一行,一个数字表示指定序列的第K位的数字
样例输入:
1 1 10
样例输出:
1
数据范围:
1<=K<=500
给出元素小于100
时间限制:
1000
空间限制:
65536
代码如下
#include<bits/stdc++.h>
using namespace std;
int main() {
long long n,m,k,cnt=1;
cin>>n>>m>>k;
long long s=n,k1=m;
while(s){
cnt++;
if(cnt==k){
cout<<s%10;
return 0;
}
s/=10;
}
while(k1){
cnt++;
if(cnt==k){
cout<<k1%10;
return 0;
}
k1/=10;
}
long long s1=n,s2=m;
for(int i=1;i<=k;i++){
s1=n+m;
n=m;
m=s1;
long long w=s1;
while(w){
cnt++;
if(cnt==k){
cout<<w%10;
return 0;
}
w/=10;
}
}
return 0;
}