数字8
不超过N位的正整数中包含有多少数字8?
输入格式
一行1个正整数N,范围[1,16]。
输出格式
一个整数。
-
一开始思路:反着算出含8的数的个数———— 所有数 - 不含任何8的数:(10^n - 1) - (9^n - 1),但是一个含8数字到底包含几个8,不好确定。
-
转换思路,按照8出现的次数分开推导:
-
只含1个8的数:
C(n,1)->n位数中,选一个当8
9^(n-1)->剩下n-1位,每一位9种选择
此时共有1×C(n,1)×9^(n-1) 个8 -
只含2个8的数:
C(n,2)×9^(n-2)
其中每个数都含有2个8,故此时共有2×C(n,2)×9^(n-2)个8 -
只含i个8的数:
C(n,i)×9^(n-i)
其中每个数都含有i个8,故此时共有i×C(n,i)×9^(n-i)个8
-
#include<bits/stdc++.h> using namespace std; long long f(int x) { long long t=1; for(int i=1;i<=x;i++){ t*=i; } return t; } long long c(int m, int n) { return f(m)/(f(n)*f(m-n)); } int main() { int n; cin>>n; long long s=0; for(int i=1; i<=n; i++) { long long C=c(n,i); long long x=i*C*pow(9, n-i); s+=x; } cout<<s; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~