A26400. 数零
填空题
困难
知识点
题目描述
数零
题目描述
给定一个整数 n,请统计从 1 开始,到 n 为止的所有整数的十进制表示中,一共出现了多少个 0 ?
例如 n=100 时,1 到 100 中,只有以下数字出现过 0:
10, 20, 30, 40, 50, 60, 70, 80, 90, 100 所以总计出现 11 次。
输入格式
单个整数:表示 n。
输出格式
单个整数:表示 0 出现的次数。
输入样例
99输出样例
9说明提示
对于 30% 的数据,n≤100,000;
对于 60% 的数据,n≤10,000,000;
对于 100% 的数据,1≤n≤1,000,000,000,000。
参考答案
#include<iostream>
int main()
{
long long n;
std::cin >> n;
long long c = 0;
long long p = 1;
long long t = 0;
while (n > 0) {
int d = n % 10;
n /= 10;
if (d > 0) {
c += n * p;
}
else {
c += (n-1) * p;
c += t + 1;
}
t += d * p;
p *= 10;
}
std::cout << c << "\n";
return 0;
}
上一题
下一题