HUD-1060 Leftmost Digit
2017-07-05 10:07
232 查看
题目链接:HDU—1060
对一个数num可写为 num=a*10^n , 即科学计数法,使a的整数部分即为num的最高位数字numnum=10n * a 这里的n与上面的n不等两边取对数: num*lg(num) = n + lg(a);因为a<10,所以0<lg(a)<1令x=n+lg(a); 则n为x的整数部分,lg(a)为x的小数部分又x=num*lg(num);a=10(x-n) = 10(x-int(x)))再取a的整数部分即得num的最高位总结:遇到大数无法处理的时候善于用logn(x);log(x)表示以e为底,logn(x)表示自定义底数
对一个数num可写为 num=a*10^n , 即科学计数法,使a的整数部分即为num的最高位数字numnum=10n * a 这里的n与上面的n不等两边取对数: num*lg(num) = n + lg(a);因为a<10,所以0<lg(a)<1令x=n+lg(a); 则n为x的整数部分,lg(a)为x的小数部分又x=num*lg(num);a=10(x-n) = 10(x-int(x)))再取a的整数部分即得num的最高位总结:遇到大数无法处理的时候善于用logn(x);log(x)表示以e为底,logn(x)表示自定义底数
#include<iostream> #include<math.h> using namespace std; int main() { int num,T,a; double n; cin>>T; while(T--) { cin>>num; n=num*log10(num);//num最大10位,n可能为19位 a=(int)pow(10,n-(__int64)(n));//int 不足以存n cout<<a<<endl; } }
相关文章推荐
- hdu 1060 Leftmost Digit
- HDOJ HDU 1060 Leftmost Digit ACM 1060 IN HDU
- HDU ACM 1060 Leftmost Digit [数学题]
- HDU 1060 Leftmost Digit
- hdu 1060 Leftmost Digit
- 【HDU 1060】Leftmost Digit
- 杭电 1060 Leftmost Digit
- hdoj Leftmost Digit 1060 (数学取对数)
- HDOJ 1060 Leftmost Digit 【科学计数法转换】
- HDU 1060 Leftmost Digit(数学)
- hdu 1060 Leftmost Digit
- HDU 1060 Leftmost Digit
- HDU 1060 Leftmost Digit
- hdu_1060_Leftmost Digit_201311071827-2
- HDU--1060--Leftmost Digit
- hdu 1060 the leftmost digit 计算N^N最左面的一位数
- hdu 1060 Leftmost Digit
- HDU 1060 Leftmost Digit 数学题
- hdu 1060 Leftmost Digit
- HDU 1060 Leftmost Digit