hdu1060 Leftmost Digit---求N的N次方的首位(对数)
发布日期:2021-09-02 05:58:50 浏览次数:2 分类:技术文章

本文共 636 字,大约阅读时间需要 2 分钟。

题目链接:

题目描述:

求N的N次方的第一位。

思路:

第一次做这种类型的题目,学到了如何运用对数。

首先推导下述公式

k的以10为底的对数值必定是A.B的形式,A为结果的整数部分,B为小数部分

这里求nn的首位只需要求出A.B = Nlog(N),然后取小数位即可,因为10A并没有什么用,只要算出100.B

就算出了首位数字。这种方法可以用来求前i位。(i数值要小,因为运算精度有限) 

1 #include
2 #include
3 #include
4 using namespace std; 5 typedef long long ll; 6 int T, n, m, cases; 7 int main() 8 { 9 cin >> T;10 while(T--)11 {12 cin >> n;13 double s = 1.0 * n * log10(1.0 * n);14 s -= (ll)s;15 s = pow(10, s);16 while(s < 1)s *= 10;17 cout<<(int)(s)<

 

转载于:https://www.cnblogs.com/fzl194/p/8682653.html

转载地址:https://blog.csdn.net/weixin_34138255/article/details/93772123 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:POJ-3662 Telephone Lines---二分+最短路+最小化第k+1大
下一篇:Inno Setup入门(五)——添加readme文件

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月11日 22时14分28秒