hdu 1060(思维)
2017-12-08 16:59
148 查看
题意:求n^n最高位的值
思路: lg(n^n)=n+lg(n) , n^n=a * 10^m (0<a<10)
所以 n+lg(n) = lg(a*10^m ) = m+lg(a) 其中n,a,m均为整数,且 0<lg(a)<1
则 lg(a)为n+lg(n)的整数部分,然后就得到答案了
果然遇到n次方级别的数要先想到取对数啊。。
#include <iostream>
using namespace std;
#include <math.h>
#include <algorithm>
#define ll long long
int main()
{
int t;
ll n;
cin>>t;
while(t--)
{
cin>>n;
ll a=n* (double)( log(n)/log(10) );
double b= (double)n*(double)(log(n)/log(10))-a;
// cout<<a<<' '<<b<<endl;
b=pow(10,b);
cout<<(ll)b<<endl;
}
return 0;
}
思路: lg(n^n)=n+lg(n) , n^n=a * 10^m (0<a<10)
所以 n+lg(n) = lg(a*10^m ) = m+lg(a) 其中n,a,m均为整数,且 0<lg(a)<1
则 lg(a)为n+lg(n)的整数部分,然后就得到答案了
果然遇到n次方级别的数要先想到取对数啊。。
#include <iostream>
using namespace std;
#include <math.h>
#include <algorithm>
#define ll long long
int main()
{
int t;
ll n;
cin>>t;
while(t--)
{
cin>>n;
ll a=n* (double)( log(n)/log(10) );
double b= (double)n*(double)(log(n)/log(10))-a;
// cout<<a<<' '<<b<<endl;
b=pow(10,b);
cout<<(ll)b<<endl;
}
return 0;
}
相关文章推荐
- HDU 5229 - ZCC loves strings (思维)
- HDU 5616 Jam's balance (乱搞思维)
- HDU - 5733 思维题 + 找规律
- hdu 5635 LCP Array【思维】
- hdu 5636 Shortest Path【floyd+思维】
- HDU - 6121 Build a tree(分治+思维)
- 【HDU】-5671-Matrix(思维,好)
- HDU 6052 To my boyfriend【思维】
- HDU 1540 Tunnel Warfare 【线段树 + 思维】
- hdu 6048 逆序数+思维数学
- hdu-1060-Leftmost Digit
- hdu 4474 BFS+思维题
- HDU 5606 tree BestCoder Round #68 (div.2) [思维]【数学】
- HDU 5701 中位数计数(思维,区间)好题
- HDU-6215 Brute Force Sorting(思维、模拟链表)
- hdu 5675 ztr loves math【思维】
- HDU 1060 Leftmost Digit
- HDU 1719 Friend(思维题目)
- HDU 6073 Matching In Multiplication(拓扑排序+思维)
- 2017 Multi-University Training Contest 9 && HDU 6166 Senior Pan 【最短路+思维】