题库首页 › 青少年软件编程(C语言) › 题目 15135

数零 题目描述 给定一个整数 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。 限制 时间限制:1000ms 内存限制:512MiB

正确答案:参考程序(Python):n=int(input());s=str(n);L=len(s);ans=0;for i,ch in enumerate(s):p=10**(L-i-1);h=int(s[:i] or 0);lo=int(s[i+1:] or 0);if ch=='0':ans+=h*p else:ans+=(h-1)*p+lo+1+... 用标准数位DP:ans=0;for i in range(L):p=10**(L-i-1);d=int(s[i]);h=int(s[:i] or 0);lo

试卷来源:202506 青少年等级考试C/C++真题六级

本卷相关题目

在线做题 同科目题库