hdu1060数学题求幂最左边的数
真正的数学题,题目大意是求n^n的最左边的一位数。n最大10^7,如果用for循环100%超时了。百度一下,你就知道。方法如下:
设m=n^n,则lg(m)=n*lg(n),所以m=10^(n*lg(n))=10^(整数部分+小数部分),他只要求最左边的,我只要取int(10^(小数部分)),就可以了。。太尼玛是数学题了。。
#include<iostream> #include<cmath> using namespace std; int main() { int t; cin>>t; while(t--) { long double n; cin>>n; double m=n*log10(n);//m^10=n^n int result=powl(10,m-(long double)((long long int)(m))); cout<<result<<endl; } return 0; }
本博客(http://www.cnblogs.com/cj695/)未标明转载的内容均为本站原创,非商业用途转载时请署名(77695)并注明来源(http://www.cnblogs.com/cj695/)。商业用途请联系作者(77695) QQ:646710030。作者(77695)保留本博客所有内容的一切权利。
独立博客:http://nfeng.cc/
独立博客:http://nfeng.cc/