hdu 1568
2015-08-14 20:17
323 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1568
解题思路:
先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);
假设给出一个数10234432,那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;
log10(1.0234432)就是log10(10234432)的小数部分.
log10(1.0234432)=0.010063744
10^0.010063744=1.023443198
那么要取几位就很明显了吧~
先取对数(对10取),然后得到结果的小数部分bit,pow(10.0,bit)以后如果答案还是<1000那么就一直乘10。
注意偶先处理了0~20项是为了方便处理~
这题要利用到数列的公式:an=(1/√5) * [((1+√5)/2)^n-((1-√5)/2)^n](n=1,2,3.....)
取完对数
log10(an)=-0.5*log10(5.0)+((double)n)*log(f)/log(10.0)+log10(1-((1-√5)/(1+√5))^n)其中f=(sqrt(5.0)+1.0)/2.0;
log10(1-((1-√5)/(1+√5))^n)->0
所以可以写成log10(an)=-0.5*log10(5.0)+((double)n)*log(f)/log(10.0);
最后取其小数部分。
代码如下:
解题思路:
先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);
假设给出一个数10234432,那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;
log10(1.0234432)就是log10(10234432)的小数部分.
log10(1.0234432)=0.010063744
10^0.010063744=1.023443198
那么要取几位就很明显了吧~
先取对数(对10取),然后得到结果的小数部分bit,pow(10.0,bit)以后如果答案还是<1000那么就一直乘10。
注意偶先处理了0~20项是为了方便处理~
这题要利用到数列的公式:an=(1/√5) * [((1+√5)/2)^n-((1-√5)/2)^n](n=1,2,3.....)
取完对数
log10(an)=-0.5*log10(5.0)+((double)n)*log(f)/log(10.0)+log10(1-((1-√5)/(1+√5))^n)其中f=(sqrt(5.0)+1.0)/2.0;
log10(1-((1-√5)/(1+√5))^n)->0
所以可以写成log10(an)=-0.5*log10(5.0)+((double)n)*log(f)/log(10.0);
最后取其小数部分。
代码如下:
#include <iostream> #include <math.h> using namespace std; long long f[21]; int main() { f[0]=0; f[1]=1; for(int i=2;i<=21;i++) f[i]=f[i-1]+f[i-2]; int n; while(cin>>n) { if(n<=21) cout<<f <<endl; else { double x=log10(1/sqrt(5))+n*log10((1+sqrt(5))/2.0); double ans=x-(int)(x)+3; // cout<<ans<<endl; cout<<(int)(pow(10.0,ans))<<endl; } } return 0; }
相关文章推荐
- HDU 2454 Degree Sequence of Graph G(Havel定理 推断一个简单图的存在)
- 洛谷 P1064 金明的预算方案
- hdu 1116 Play on Words(欧拉通路)
- Android(java)学习笔记156:Java虚拟机和Dalvik虚拟机的区别
- ZOJ 2326 Tangled in Cables(最小生成树--prime)
- webservice异常
- How do I detect which iOS is running on user's device programmatically?
- OC - Memory
- 杭电 1285 确定比赛名次(拓扑排序)
- 计算git树上任意两点的最近分割点。
- 初探 iOS8 中的 Size Class(转载)
- 利用工厂模式实现Dao层和Service的解耦
- 【转】Java线程面试题Top50
- HDU 2094 产生冠军
- 【Ajax技术】Ajax技术回顾与XHR对象的创建
- hdu 4586 Play the Dice(概率dp)
- UVa10596 Morning Walk
- poj 1269
- NZND壳-第三天
- ECMall /app/buyer_groupbuy.app.php SQL Injection Vul