題目描述
小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...