A24122. 以下程序统计区间 [L, R] 中,数字 k (0 ≤ k ≤ 9) 在所有数字各位上出现的次数。例如 [1, 12] 中,数字 1 出现了 5 次(1, 10, 11(2次), 12)。#include <iostream> using namespace std; long long countDigit(long long n, int k) { long long cnt = 0; lo…
单选题
较易
知识点
题目描述
以下程序统计区间 [L, R] 中,数字 k (0 ≤ k ≤ 9) 在所有数字各位上出现的次数。例如 [1, 12] 中,数字 1 出现了 5 次(1, 10, 11(2次), 12)。
#include <iostream>
using namespace std;
long long countDigit(long long n, int k) {
long long cnt = 0;
long long factor = 1;
while (n / factor != 0) {
long long curr = (n / factor) % 10;
long long higher = n / (factor * 10);
long long lower = n % factor;
if (curr < k) {
cnt += higher * factor;
} else if (curr == k) {
cnt += higher * factor + lower + 1;
} else {
cnt += (higher + 1) * factor;
}
if (k == 0) { // ②
③;
}
factor *= 10;
}
return cnt;
}
int main() {
long long L, R;
int k;
cin >> L >> R >> k;
long long ans = countDigit(R, k) - countDigit(①, k);
cout << ans << endl;
return 0;
}①处应填( )
选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员
上一题
下一题