這是我的第一篇產(chǎn)出!
求一個數(shù)字的位數(shù),可以不斷地%10并計數(shù)。
但是對于一個極大的數(shù),高精度又受限制(我覺得不會有人喜歡寫高精度的),怎么求位數(shù)呢?
創(chuàng)新互聯(lián)公司擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊,在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕十年,專業(yè)且經(jīng)驗豐富。十年網(wǎng)站優(yōu)化營銷經(jīng)驗,我們已為上千多家中小企業(yè)提供了網(wǎng)站設(shè)計制作、做網(wǎng)站解決方案,按需搭建網(wǎng)站,設(shè)計滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!
3939這是一個四位數(shù),我們換一個方法看這個數(shù)。
1.3939>10^0,即3939>1,3939至少有 (0+1) 位數(shù)
2.3939>10^1,即3939>10,3939至少有 (1+1) 位數(shù)
3.3939>10^2,即3939>100,3939至少有 (2+1) 位數(shù)
4.3939>10^3,即3939>1000,3939至少有 (3+1) 位數(shù)
5.3939<10^4,即3939<10000,3939有 (3+1) 位數(shù)
從上面的過程易得
對一個數(shù)x,它的位數(shù)為lg(x)+1
emmm是一個非常顯而易見的結(jié)論呢..實戰(zhàn)演練怎么樣呢?
洛谷https://www.luogu.org/problem/show?pid=2759
題目描述
使得 x^x 達(dá)到或超過 n 位數(shù)字的最小正整數(shù) x 是多少?
輸入格式
一個正整數(shù) n
輸出格式:
使得 x^x 達(dá)到 n 位數(shù)字的最小正整數(shù) x
輸入樣例#1:
11
輸出樣例#1:
10
說明
n<=2000000000
2后面是9個0,這個數(shù)多大炸不炸希望大家心里有數(shù)。
從0枚舉x,希望不大,20分都是奇跡
蠻明顯的是二分,但是怎么分呢這是個問題。
這個時候,我們剛剛得到的式子就顯得尤為重要
對一個數(shù)x,它的位數(shù)為lg(x)+1
本題是x^x,那么位數(shù)就是
x*lg(x)+1
而且c的math已經(jīng)有現(xiàn)成的log,log10了,我們可以直接拿來白嫖。
log10(double x)返回一個浮點(diǎn)數(shù),后面的位數(shù)不需要,轉(zhuǎn)成×××?xí)r會消掉。
#include<iostream> #include<cmath> using namespace std; long long int n,l=1,mid,r=(long long)3e9; int main()//x^x>=10(n-1) { ios::sync_with_stdio(false); cin>>n; while(l<r) { mid=(l+r)/2; if(mid*log10(mid)+1>=n) r=mid; else l=mid+1; } cout<<l; return 0; }
3e9那里的(long long)讓編譯器閉嘴
非常樸素的二分...
就這樣了!大家快去把它A了吧,提高+/省選-哦!
網(wǎng)站名稱:關(guān)于數(shù)的位數(shù)
本文鏈接:http://jinyejixie.com/article8/ijjeip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站設(shè)計公司、網(wǎng)站排名、ChatGPT、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)