统计次数【清华大学考研机试题】
统计次数
给定两个正整数
输入格式
共一行,包含两个整数
输出格式
输出一个整数,表示答案。
数据范围
输入样例:
12 1
输出样例:
5
样例解释
从
暴力 (174 ms)
具体实现
从 1 遍历到 n,分别统计每个数中 k 出现的次数。
不断取 x 的末尾,判断它是否为 k,再把 x 除以 10(舍弃末位)。
点击查看代码
#include<iostream>
using namespace std;
typedef long long LL;
int n,k;
LL ans;
int main(){
cin >> n >> k;
for(int i = 1; i <= n; i ++ ){
int t = i;
while(t){
if(t % 10 == k)ans ++;
t /= 10;
}
}
cout << ans;
}
数位DP (62 ms)
点击查看代码
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
int n,k;
int f[N];
LL ans;
int main(){
cin >> n >> k;
for(int i = 1; i <= n; i ++ )f[i] = f[i / 10] + (i % 10 == k),ans += f[i];
cout << ans;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!