關於數的位數

2022-05-30 15:54:14 字數 1262 閱讀 8661

這是我的第一篇產出!

求乙個數字的位數,可以不斷地%10並計數。

但是對於乙個極大的數,高精度又受限制(我覺得不會有人喜歡寫高精度的),怎麼求位數呢?

3939這是乙個四位數,我們換乙個方法看這個數。

1.3939>10^0,即3939>1,3939至少有 (0+1) 位數

2.3939>10^1,即3939>10,3939至少有 (1+1) 位數

3.3939>10^2,即3939>100,3939至少有 (2+1) 位數

4.3939>10^3,即3939>1000,3939至少有 (3+1) 位數

5.3939<10^4,即3939<10000,3939有 (3+1) 位數

從上面的過程易得

對乙個數x,它的位數為lg(x)+1

emmm是乙個非常顯而易見的結論呢..實戰演練怎麼樣呢?

洛谷

使得 x^x 達到或超過 n 位數字的最小正整數 x 是多少?

輸入格式
乙個正整數 n

輸出格式:
使得 x^x 達到 n 位數字的最小正整數 x

輸入樣例#1:
輸出樣例#1:
說明
n<=2000000000

2後面是9個0,這個數多大炸不炸希望大家心裡有數。

從0列舉x,希望不大,20分都是奇蹟

蠻明顯的是二分,但是怎麼分呢這是個問題。

這個時候,我們剛剛得到的式子就顯得尤為重要

對乙個數x,它的位數為lg(x)+1

本題是x^x,那麼位數就是

x*lg(x)+1

而且c的math已經有現成的log,log10了,我們可以直接拿來白嫖。

log10(double x)返回乙個浮點數,後面的位數不需要,轉成整形時會消掉。

#include#includeusing namespace std;

long long int n,l=1,mid,r=(long long)3e9;

int main()

cout<3e9那裡的(long long)讓編譯器閉嘴

非常樸素的二分...

就這樣了!大家快去把它a了吧,提高+/省選-哦!

產生8位數的隨機數

1 隨機數的基數為大寫字母26個,和數字0 9 namespace test random rd new random for inti 0 i 8 i console.writeline result console.readline 2.若8位數都要產生不相同的字母和數字,則 使用如下 如果你想...

產生8位數的隨機數

1 隨機數的基數為大寫字母26個,和數字0 9 view code namespace test random rd new random for inti 0 i 8 i console.writeline result console.readline 2.若8位數都要產生不相同的字母和數字,則...

反轉32 位數

筆試的時候遇見一道這樣的題目,不會做.回來趕緊上網找.感覺牛人就是牛人.這樣的演算法我為啥就是想不出來呢 把乙個32位的數按位反轉,就是第32位轉到第1位,第31位轉到第2位 什麼樣的演算法最節省效率?參考http www.yuanma.org data 2007 0723 article 2763...