/*斐波那契数列为:0,1,1,2,3,5,8,13...常规递推公式为f(n)=f(n-1)+f(n-2);
但这里不一样的是,我们的前两个数字不一定是0,1也就是说,斐波那契数列的前两个数字是随机数,
(保证是非负整数).下面我们开始吧,我会告诉你斐波那契数列的第20项的值m,请你判断是否会有这样
的数列存在,对了,你要保证数列的每一项都是整数 */
#include<stdio.h>
int main()
{
int g;
scanf("%d",&g);
while(g--)
{
int n,i,flag=0;
scanf("%d",&n);
if((n-i*2584)%4181==0)//判断n是否既是2584的倍数,又是4181的倍数
{
flag=1;
break;
}
}
if(flag)
{
printf("%d %d\n",i,(n-i*2584)/4181);
}
else
printf("No answer\n");
}
return 0;
但这里不一样的是,我们的前两个数字不一定是0,1也就是说,斐波那契数列的前两个数字是随机数,
(保证是非负整数).下面我们开始吧,我会告诉你斐波那契数列的第20项的值m,请你判断是否会有这样
的数列存在,对了,你要保证数列的每一项都是整数 */
#include<stdio.h>
int main()
{
int g;
scanf("%d",&g);
while(g--)
{
int n,i,flag=0;
scanf("%d",&n);
for(i=0;i<=n/2584;i++)//既然以原斐波那契数列为例,即f(20)=f(19)+f(20)=2584*f(1)+4181*f(2).意思是只要是斐波那契数列,则无论前两项是多,第二十项一定是
f(20)=2584*f(1)+4181*f(2);i表示第一项
if((n-i*2584)%4181==0)//判断n是否既是2584的倍数,又是4181的倍数
{
flag=1;
break;
}
}
if(flag)
{
printf("%d %d\n",i,(n-i*2584)/4181);
}
else
printf("No answer\n");
}
return 0;
}
思路详解:对于斐波那契数列四这道程序题,本人理解的也不是很透彻,尽量解释吧,如上