一句话题意:让你求n^n的最左位的数字是多少。
题解:n最大可以为1000000000,那n^n就是超大的数了,,对于求关于n次方、斐波那契额和阶乘的位数这类的问题,首先就会想到取对数什么的(套路...);那么,看这题,对于m=n^n,有log10(m)=n*log10(n); 假设log10(m)=X.abcd,n^n=H.efgh*10^y;那么,又因为10^X.abcd=m=H.efgh*10^y; 则必有:X=H;故:10^0.abcd=H.efgh;求出10^0.abcd后,那它的整数位就是n^n的最左位了。 (另外,在对double取整时用(int)强转时会一直莫名的wa...估计应该是double为64位、int为32位互相转换损失的精度在某些数据上会给坑。。。)
ac代码:
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include <set>
7 #include
8 #include
9 #include