题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1060
题目类型:数论
题目知识点:log的巧用
题目描述:给定一个大数n 输出 n^n中最左边的一个数
解题过程:错了很多次 还是一直以为是模拟或者是找规律的题目,后来发现自己错的太离谱了,这种数基本上使用log来处理的
解题思路:设 M = N^N
log10(M)=nlog10 (n)
m = 10^nlog10(n)
m的最左边的数只与 10^nlog10(n)的 小数部分有关
代码如下:
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { int t; 5 __int64 n; 6 scanf("%d",&t); 7 while(t --) 8 { 9 10 scanf("%I64d",&n); 11 printf("%d\n",(int)pow(10,n*log10(n)-floor(n*log10(n)))); 12 13 } 14 return 0; 15 }