这个题大意是:计算n^n的最高位数是什么。

解题思路:

          1,令M=N^N; 

          2,分别对等式两边取对数得 log10(M)=N*log10(N),M=10^(N*log10(N));                  

          3,令N*log10(N)=a+b,a为整数,b为小数;

          4C函数:log10(),计算对数,pow(a,b)计算a^b

          5由于10的任何整数次幂首位一定为1,所以,M的首位只和N*log10(N)的小数部分有关

          即只用求10^b救可以了;

          6,最后对10^b取整,输出取整的这个数就行了。(因为0<=b<1,所以1<=10^b<10

        其取整,那么的到的就是一个个位,也就是所求的数)。

起初w了好几次,关键是忘记n是长整型了。

代码:

View Code
 1 #include<iostream>
 2 #include<math.h>
 3 using namespace std;
 4 int main()
 5 {
 6     int t,r;
 7     long long  s;
 8     double x;
 9     cin>>t;
10     while(t--)
11     {
12         cin>>s;
13         x=s*log10((double)s)-(long long)(s*log10((double)s));//当时这个也忘了加长整型了,错了都不知道 
14         r=(int)(pow(10.0,x));
15         cout<<r<<endl;        
16     }
17         
18 }

 

posted on 2012-09-05 20:57  xinmenghuairi  阅读(278)  评论(0编辑  收藏  举报