校招面試題 能否被3整除的數字序列個數

2021-09-25 13:27:10 字數 1165 閱讀 5398

題目描述

小q得到乙個神奇的數列: 1, 12, 123,...12345678910,1234567891011...。
並且小q對於能否被3整除這個性質很感興趣。

小q現在希望你能幫他計算一下從數列的第l個到第r個(包含端點)有多少個數可以被3整除。

輸入描述:

輸入包括兩個整數l和r(1 <= l <= r <= 1e9), 表示要求解的區間兩端。

輸出描述:

輸出乙個整數, 表示區間內能被3整除的數字個數。

示例1

輸入

2        5
輸出

3
說明

12, 123, 1234, 12345...

其中12, 123, 12345能被3整除。

這個題目大家可以換乙個思路去求解,首先根據上面的**,我們可以發現,能被3整除的數字序列,按照一般的理解,就是這個數字的各位數字之和對3取餘,如果是0,代表可以,否則不可以。

但是這樣思路存在的問題是:時間複雜度很高,空間複雜度也很高。因為數字序列的大小和長度均不確定。

考慮以上問題,進行優化

核心演算法:

根據**可以看出,假如乙個序列可以被整除,那麼序列對應的序號,一定不是1.

例如:序號為3的數字123可以被整除     序號3對3取餘的結果為0

序號為4的數字1234不可以被整除       序號4對3取余為1

所以統計這個數字序列是否可以被整除,也就是統計序號對3取餘之後非1的個數。

#includeint findall(long long l,long long r)

return sum;

}int main(void)

面試題 數字序列中某一位的數字

數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式,求任意第n位對應的數字。思路 利用進製縮小範圍。int digitatindex int index if index 0 ret...

面試題44 數字序列中某一位的數字

題目 數字以0123456789101112131415 的格式序列化到乙個字串行中。在這個序列中,第5位 從0開始計數 是5,第13位是1,第19位是4,等等。請寫乙個函式求任意位對應的數字。code include include include include include include ...

開心IT面試題 找出字串最長的數字串

題目 寫乙個函式,它的原形是int continumax char outputstr,char intputstr 功能 在字串中找出連續最長的數字串,並把這個串的長度返回,並把這個最長數字串付給其中乙個函式引數outputstr所指記憶體。例如 abcd12345ed125ss123456789...