題意:求N^N的最高位數字。 ——>>從昨晚想到今晚,二十多個小時,最後還是決定找博客了,理解理解後,明了…… 對於一個數:10^(1000.68515) 它的是高位是多少呢? 先拆:10^1000 * 10^0.68515 先看右邊,10^0.68515 想想我們學的指數函數:y = a ^ x; 對於y = 10 ^ x 當0 <= x < 1時, y = 10 ^ x單調遞增 此時的值域為[1, 10) 然後再乘上左邊的10的正整數次冪,第一位數字當然是由右邊決定。 N^N = 10^(Nlog(N)),問題就容易解決了。 [cpp ] #include <iostream> #include <cmath> using namespace std; int main() { int T, N; cin>>T; while(T--) { cin>>N; double f = N*log10((double)N) - floor(N*log10((double)N)); int ret = floor(pow(10.0, f)); cout<<ret<<endl; } return 0; }