hdu_1060_Leftmost Digit_201311071827-2
2013-11-07 18:44
309 查看
Leftmost Digit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11305 Accepted Submission(s): 4329[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
//x ^ x= 10^(x*lg(x))=10^(整数部分+小数部分) ;则x ^ x的最高位是由小数部分决定的(因为10的整数次幂不会影响最高位,只在最末位加0)。
//去掉整数部分(floor函数向下去整)得到10^(小数部分)最高位即是所求……
//x ^ x= 10^(x*lg(x))=10^(整数部分+小数部分) ; #include <stdio.h> #include <math.h> int main() { int T; scanf("%d",&T); while(T--) { int n,t; double a; scanf("%d",&n); a = log10((double)n); a -= (int)a; //n*a的结果可能很大,所以先减去整数部分再乘 a = n*a; t = (int)a; a -= t; t = (int)pow(10.0,a); printf("%d\n",t); } return 0; }
链接:/article/4736587.html
总结:数学题,log的运用,掌握的不行,需多练习
相关文章推荐
- 数码管的显示
- C#类的访问修饰符区别介绍
- hust 1606,乱搞
- Linux remote access using X11
- why inline functions must be put in header files?
- hust 1602, 乱搞
- zabbix自定义监控脚本配置
- GCJ 2008 Round 1A A - Minimum Scalar Product (贪心)
- SVM程序应用
- 极路由能否成为下一个小米?
- sheepdog(牧羊犬):一种EBS的开源实现
- UVA 12661 Funny Car Racing(最短路)
- nbut 1115, 乱搞?
- TDD开发案例
- 禁止程序出错后,弹出错误窗口
- iOS - GIF图的完美拆解、合成、显示
- 查看.so
- 【iOS】用RGB颜色模型实现彩虹渐变
- 抽奖
- hdu 1452 Happy 2004(快速幂取模)