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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

求a^b前n位和后n位

發(fā)布時(shí)間:2025/3/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 求a^b前n位和后n位 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

求解a^b后n位就不說(shuō)了,直接用快速冪就行了;

主要講的是a^b前n位:在網(wǎng)上看了題解才有點(diǎn)明白

m=n^n;兩邊同取對(duì)數(shù),得到,log10(m)=n*log10(n);再得到,m=10^(n*log10(n));

然后,對(duì)于10的整數(shù)次冪,第一位是1,所以,第一位數(shù)取決于n*log10(n)的小數(shù)部分

總之,log很強(qiáng)大啊,在求一個(gè)數(shù)的位數(shù)上,在將大整數(shù)化成范圍內(nèi)的整數(shù)上,在指數(shù)問(wèn)題上

對(duì)于一個(gè)>=1的正整數(shù)m,10^(log10(m)-(int)log10(m))這個(gè)值,是原值m的1/k,k=1,10,100,1000...

為什么呢,看下面:

m=375,375=10^2.5740312677277188

對(duì)于一個(gè)>=1的正整數(shù)m,我們假設(shè)m=10^(a+b),a為指數(shù)的整數(shù)部分,b為指數(shù)的小數(shù)部分

(對(duì)比上面,如果m=375,那么a=2,b=0.5740312677277188)

則log10(m)-(int)log10(m)=(a+b)-a=b; 那么10^b是什么東西呢?

對(duì)于任意數(shù)m,m=10^(a+b)=10^a*10^b,顯然10^a={1,10,100,1000,10000...};


也就說(shuō),10^(b的小數(shù)部分)最終將直接影響最左邊的N位數(shù)。將這個(gè)結(jié)果乘以1,就是前1位的答案,乘以10,就是前2位的答案。。。類推

#include<iostream> #include<cmath> using namespace std; int pow(int a,int k) //后3位數(shù)的快速冪算法 { int ans=1; a%=1000; while(k) { if(k&1) { ans=ans*a; ans%=1000; } a=a*a; a%=1000; k>>=1; } return ans; } int main() { __int64 c; double a,b; int n,m,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); a=m*log10(0.0+n); c=(__int64)a; //整數(shù)部分 b=a-c; //小數(shù)部分 c=(__int64)(pow(10.0,b)*100); //結(jié)果乘以100,也就意味著是前3位 printf("%I64d...%03d\n",c,pow(n,m)); } return 0; }

總結(jié)

以上是生活随笔為你收集整理的求a^b前n位和后n位的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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