题目地址: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 }

 

 

 

 

posted on 2012-12-20 17:12  dark_dream  阅读(160)  评论(0编辑  收藏  举报