
题目描述 不超过 N 位的正整数中包含有多少数字 8 ?
输入格式 一行 1 个正整数 N ,范围 [1,16]。
输出格式 一个整数。
输入数据 1
2
输出数据 1
20
样例解释 8,18,28,38,48,58,68,78,88, 98 与 80,81,82,83,84,85,86,87,89 这些数中有 8 ,共有 包含了 20 个数字 8 。
首先我们能通过推理能找到此规律↓
规律
从数字1~10中,数字“8”一共出现了1次。
从数字1~100中,数字“8”一共出现了20次。
从数字1~1000中,数字“8”一共出现了300次。
从数字1~10000中,数字“8”一共出现了4000次。
从数字1~100000中,数字“8”一共出现了50000次。
.......
从数字1~n位数中,数字“8”一共出现了10的n-1次方×(n-1)次。
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
scanf("%d",&n);
cout<<n;
for(int i=1;i<=n-1;i++)cout<<0;
return 0;
}
文章讨论了如何通过观察数字8在不同位数范围内的出现频率规律,给出一个C++程序来解决不超过N位的正整数中包含数字8的次数问题。程序利用数学公式10^(n-1)*(n-1)计算总的8的出现次数。

675

被折叠的 条评论
为什么被折叠?



