hdu 1060 Leftmost Digit
2015-09-16 20:41
211 查看
Leftmost Digit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15032 Accepted Submission(s):
5813
[align=left]Problem Description[/align]
Given a positive integer N, you should output the
leftmost digit of N^N.
[align=left]Input[/align]
The input contains several test cases. The first line
of the input is a single integer T which is the number of test cases. T test
cases follow.
Each test case contains a single positive integer
N(1<=N<=1,000,000,000).
[align=left]Output[/align]
For each test case, you should output the leftmost
digit of N^N.
[align=left]Sample Input[/align]
2
3
4
[align=left]Sample Output[/align]
2
2
Hint
In the first case, 3 * 3 * 3 = 27, so the leftmost digit is 2.
In the second case, 4 * 4 * 4 * 4 = 256, so the leftmost digit is 2.
[align=left]Author[/align]
Ignatius.L
[align=left]Recommend[/align]
We have carefully selected several similar problems for
you: 1071 1573 1066 1065 1788
和数学有关的题,要用到数学公式,不可以直接求出这个数。
m=n^n,两边分别对10取对数得 log10(m)=n*log10(n),得m=10^(n*log10(n)),由于10的任何整数次幂首位一定为1,所以m的首位只和n*log10(n)的小数部分有关
题意:输入N, 求N^N的首位是多少。
附上代码:
#include <iostream> #include <cmath> #include <cstdio> using namespace std; int main() { __int64 t; int n,m,s; double a,b; scanf("%d",&n); while(n--) { scanf("%d",&m); a=1.0*m*log10(m*1.0); t=(__int64)a; b=a-t; //求出小数部分 s=(int)(pow(10,b)); printf("%d\n",s); } return 0; }
相关文章推荐
- 基因检测如何让癌症变的可预防?
- libsvm-2.84在MATLAB中使用遇到的刻骨铭心的error
- 杭电acm--2033
- 线程安全的实现延迟初始化的方案
- 【矩阵快速幂】ZOJ 2974 Just Pour the Water
- java学习之Set集合、HashSet
- MySQL(11):存储引擎
- HDU5446
- 堆排序
- SQL查询结果把两个字段拼接到一起
- java map的使用
- 3W咖啡商业计划书模板
- 虚析构函数
- uva 10815(set使用练习)
- Java 策略模式
- 逆向编程与反汇编的区别
- HDU 5438 Ponds(dfs)——2015 ACM/ICPC Asia Regional Changchun Online
- JavaScript调试工具
- Block传值
- easyui+rest服务,ajax请求session过期不跳转问题解决