日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

ACM_求N^N的前5位数和后5位数(数论)

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ACM_求N^N的前5位数和后5位数(数论) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

NNNNN

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

對于整數(shù)N,求N^N的前5位和后5位(1057題加強版)

Input:

多組測試數(shù)據(jù),每組測試數(shù)據(jù)輸入為一個整數(shù)n(6 <= n <= 10^9),n為0時結(jié)束。

Output:

對每組測試輸出為兩個整數(shù)a和b,由空格隔開,保留前后0,格式見樣例。

Sample Input:

6
10
110
1001
0

Sample Output:

46656 46656
10000 00000
35743 00000
27196 01001
解題思路:①怎么求N^N的前5位數(shù)呢?我們有對一個數(shù)N,用科學(xué)計數(shù)法表示為N=a*10^m,此時a的整數(shù)部分即為N的最高位數(shù)字。假設(shè)b是最高位數(shù)字(0<b<10,b取整數(shù)),則a=b*10^4就是N^N的前五位數(shù),所以N^N=b*10^m=a*10^(m-4),兩邊取對數(shù)得N*lg(N)=lg(b)+m=lg(a)+m-4;因為0<b<10(b取整數(shù)),所以0<=lg(b)<1為小數(shù)部分。令x=lg(b)+m=lg(a)+m-4(m為x的整數(shù)部分m=floor(x)),x=N*lg(N),則a=10^(x+4-m)=10^(x+4-(floor)x);這里用floor比較好,向下取整(而不是int,或者long?long,這樣可以避免溢出),即返回不大于x的最大整數(shù)。
pow(x,y)函數(shù)計算x的y次冪。②至于求后5位數(shù)就更簡單了,快速冪取余即可。
AC代碼:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 int mod_pow(LL base,LL n,int mod){
 5     LL res=1;
 6     while(n>0){
 7         if(n&1)res=res*base%mod;
 8         base=base*base%mod;
 9         n>>=1;
10     }
11     return res;
12 }
13 int main()
14 {
15     int n;
16     while(cin>>n && n){
17         printf("%0.0f %05d\n",pow(10,n*log10(n)-floor(n*log10(n))+4),mod_pow(n,n,100000));
18     }
19     return 0;
20 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/acgoto/p/9017451.html

總結(jié)

以上是生活随笔為你收集整理的ACM_求N^N的前5位数和后5位数(数论)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。