码迷,mamicode.com
首页 > 其他好文 > 详细

ACM_Leftmost Digit

时间:2018-04-19 20:27:07      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:pow   title   space   pre   用例   limit   mit   测试   git   

Leftmost Digit

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

给定一个正整数N,你应该输出N ^ N的最左边的数字。

Input:

输入包含多个测试用例。 输入的第一行是单个整数T,它是测试用例的数量。 T测试用例如下。
每个测试用例都包含一个正整数N(1 <= N <= 10000)。 Hint:64位整数使用long long int,输入输出%lld.

Output:

对于每个测试用例,您应该输出N^N的最左边的数字。

Sample Input:

2
3
4

Sample Output:

2
2
解题思路:对一个数N,用科学计数法表示为N=a*10^m,此时a的整数部分即为N的最高位数字,N^N的最左边的数字a即为题目所求。
所以N^N=a*10^m,两边取对数得N*lg(N)=m+lg(a);因为0<a<10,所以0<lg(a)<1,令x=lg(a)+m(m为x的整数部分),x=N*lg(N);
则a=10^(x-m)=10^(x-(int)x),注意这里的N最大为10^4,即x=N*lg(N)=4*10^4x小于int范围内,所以x强转为int即为m,最后输出(int)a整数部分即可。
pow(x,y)函数计算x的y次幂。
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int T,N;
 6     while(cin>>T){
 7         while(T--){
 8             cin>>N;
 9             double x=N*log10(N);
10             double g=x-(int)x;
11             cout<<(int)pow(10,g)<<endl;
12         }
13     }
14     return 0;
15 }
 

ACM_Leftmost Digit

标签:pow   title   space   pre   用例   limit   mit   测试   git   

原文地址:https://www.cnblogs.com/acgoto/p/8885875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!