1168 Fibonacci数列

描述

已知Fibonacci数列

F1=1,

F2=1,

F3=2,

F4=3,

F5=5,

...

Fx=Fx-1+Fx-2

Fibonacci数列的各项中末尾恰好有k0的第m项。比如末尾恰好有10的第1项就是F15=610,而末尾恰好有20的第2项则是

F300=222232244629420445529739893461909967206666939096499764990979600

我们只需要这一项的下标。

输入

输入包含多组数据。

第一行为数据的组数x0<x<=20),接下来每组数据一行。

每组数据包括两个整数km,用一个空格隔开,输入保证输出结果小于231

输出

每组数据输出一行,为Fibonacci数列中末尾恰好有k0的第m项的下标

 

样例输入
3
1 1
2 2
2 5
 
样例输出
15
300
900

此题通过找规律求解

#include <stdio.h>

int main()
{
	int n, t;
	int i, j;
	int m, sum;
	int k,kk;
	scanf("%d", &t);
	while(t --)
	{
		scanf("%d%d", &n, &m);
		k = 1;
		kk;
		for(i = 1; i < n; i ++)
		{
			k *= 10;
		}
		k *= 15;
		if(m < 10 && n == 1)
		{
			sum = 15*m;
		}
		else
		{
			if(n == 1)
			{
				sum = 15 * m;
				sum += (15*((m - 1)/9));
			}
			else
			{
				if(n == 2)
				{
					sum = k*m;
					sum += (k*((m - 1)/4));
				}
				else
				{
					k = k /2;
					sum = k* m;
					sum += (k*((m - 1)/9));
				}
			}
		}
			printf("%d\n", sum);
	}
	return 0;
}


 

你可能感兴趣的:(1168 Fibonacci数列)