hdu_1060_数学求解n^n的第一位数

来源:互联网 发布:免费的海关数据网站 编辑:程序博客网 时间:2024/05/16 03:26
Leftmost DigitGiven a positive integer N, you should output the leftmost digit of N^N.InputThe 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).OutputFor each test case, you should output the leftmost digit of N^N.Sample Input234Sample Output22
题意:    求n^n的第一位数;解:    设 m=n^n;       log10(m)=log10(n^n);       log10(m)=n*log10(n);       m=10(n*log10(n));10的幂次方第一位一定是1,就要考虑它的小数位
//time º¯ÊýµÄʹÓÃ#include<cstdio>#include<iostream>#include<ctime>#include<algorithm>#include<cmath>clock_t st,ed;double ans;using namespace std;typedef long long ll;int x,y;ll solve(ll a,ll b){    ll ans=1;    a%=10;    while(b)    {        if(b&1)            ans=ans*a%10;        b>>=1;        a=a*a%10 ;    }    return ans;}int main(){    ll t,a,b;   /* for(int i=1;i<=15;i++)    {        cout<<i<<" "<<solve(i,i)<<endl;    }*/    while(cin>>t)    {        while(t--)        {            cin>>b;            double t=b*log10(b*1.0);            double point=t-(ll)t;            int ans=pow(10.0,point);            cout<<ans<<endl;        }    }    return 0;}
原创粉丝点击