hdu 1568
2012-02-13 10:53
169 查看
经典的数学题啊~~~
题解:http://blog.csdn.net/cscj2010/article/details/6768395
感触:数学还是得灵活应用啊,关键是这个公式啊……起初是打算用大数做的,觉得好麻烦,就搜了一下,看一下别人的思路,我晕,竟然可以这样思考,NB啊~~~
还有就是因为后面约了一个式子,但是这个n得足够大,所以要先存储前面的几个数……
#include "stdio.h"
#include "math.h"
int fib[50]={0,1};
int main()
{
int n,i;
double a;
double ig,fp;
for(i=2;i<=20;i++)
fib[i]=fib[i-1]+fib[i-2];
while(scanf("%d",&n)==1)
{
if(n<=20)
{
printf("%d\n",fib
);
continue;
}
a=((double)n)*log10((1+sqrt(5.0))/2)-0.5*log10(5.0);
fp=pow(10.0,modf(a,&ig));
while(fp<1000)
{
fp*=10;
}
printf("%d\n",(int)fp);//这里应该转换成整形数后再输出,因为用%.lf输出会出现进位现象……
}
return 0;
}
题解:http://blog.csdn.net/cscj2010/article/details/6768395
感触:数学还是得灵活应用啊,关键是这个公式啊……起初是打算用大数做的,觉得好麻烦,就搜了一下,看一下别人的思路,我晕,竟然可以这样思考,NB啊~~~
还有就是因为后面约了一个式子,但是这个n得足够大,所以要先存储前面的几个数……
#include "stdio.h"
#include "math.h"
int fib[50]={0,1};
int main()
{
int n,i;
double a;
double ig,fp;
for(i=2;i<=20;i++)
fib[i]=fib[i-1]+fib[i-2];
while(scanf("%d",&n)==1)
{
if(n<=20)
{
printf("%d\n",fib
);
continue;
}
a=((double)n)*log10((1+sqrt(5.0))/2)-0.5*log10(5.0);
fp=pow(10.0,modf(a,&ig));
while(fp<1000)
{
fp*=10;
}
printf("%d\n",(int)fp);//这里应该转换成整形数后再输出,因为用%.lf输出会出现进位现象……
}
return 0;
}
相关文章推荐
- [斐波那契前n位 数学技巧] HDU 1568 Fibonacci
- hdu 1568
- hdu 1568
- hdu 1568 Fibonacci
- HDU 1568 Fibonacci (数学)
- HDU 1568 Fibonacci 公式求斐波那契数列
- HDU 1568
- HDU 1568 Fibonacci
- 数论(fabonacci数列) hdu-1568-Fibonacci
- hdu 1568 Fibonacci (数论)
- HDU 1568 Fibonacci ★(取科学计数法)
- HDU 1568 Fibonacci
- HDU 1568 犀利的斐波那契
- hdu 1568 Fibonacci 对数。。
- HDU 1568 Fibonacci(简单数论)
- hdu-1568 Fibonacci
- hdu 1568(Fibonacci)(就是大数的斐波那契公式)
- HDU 1568 Fibonacci【数学】
- hdu 1568 求斐波数的前四位
- HDU-1568 Fibonacci【数学公式题】