当前位置: 首页 > wzjs >正文

网站正在建设维护中页面软件开发一般需要多少钱

网站正在建设维护中页面,软件开发一般需要多少钱,简单网站建设公司,阿里云1元域名数据结构与算法学习笔记----数位统计DP author: 明月清了个风 first publish time: 2025.2.16 ps⭐️一道数位统计DP题目,比较复杂,代码中需要注意的点比较多,关键的思路是分情况讨论 Acwing 338. 计数问题 [原题链接](338. 计数问题 - Ac…

数据结构与算法学习笔记----数位统计DP

@@ author: 明月清了个风
@@ first publish time: 2025.2.16

ps⭐️一道数位统计DP题目,比较复杂,代码中需要注意的点比较多,关键的思路是分情况讨论

Acwing 338. 计数问题

[原题链接](338. 计数问题 - AcWing题库)

给定两个整数 a a a b b b,求 a a a b b b之间的所有数字中 0 ∼ 9 0 \sim 9 09的出现次数。

例如, a = 11024 , b = 1032 a = 11024, b = 1032 a=11024,b=1032,则 a a a b b b之间的 9 9 9个数如下:

1024 1025 1026 1027 1028 1029 1030 1031 1032

其中0出现 10 10 10次,1出现 10 10 10次,2出现 7 7 7次,3出现 3 3 3次等等。。。

输入格式

输入包含多组测试数据。

每组测试数据占一行,包含两个整数 a a a b b b

当读入一行为0 0时,表示输入终止,且该行不作处理。

输出格式

每组数据输出一个结果,每个结果占一行。

每个结果包含十个用空格隔开的数字,第一个数字表示 0出现的次数,第二个数字表示1出现的次数,以此类推。

数据范围

0 < a , b < 100000000 0 < a, b < 100000000 0<a,b<100000000

思路

很明显不能直接暴力做,数据范围太大了,这题都关键思路是分情况讨论,并且用到了类似前缀和的思想,对于 [ a , b ] [a,b] [a,b]中某个数 x x x出现的次数,可以通过计算 [ 1 , b ] [1,b] [1,b]中出现次数- [ 1 , a − 1 ] [1,a - 1] [1,a1]中出现次数计算。

计算的思路是求出数 x x x在每一位上出现的次数,然后进行下面的分情况讨论:

假设我们的 n n n a b c d e f g abcdefg abcdefg,统计的数是 x > 0 x > 0 x>0,当前统计其在第四位的数的数量

  1. 高位 000 ∼ a b c − 1 000 \sim abc - 1 000abc1,第四位取 x x x,那么后面的 e f g efg efg可以随便取,因此这一类中共有 a b c ∗ 1000 abc * 1000 abc1000
  2. 当前三位等于 a b c abc abc,对 n n n的第四位进行讨论
    1. d < x d < x d<x,那么范围内不可能有数在这一位是 x x x,因此为 0 0 0
    2. d = x d = x d=x,则后三位就可以取到 000 ∼ e f g 000 \sim efg 000efg,共 e f g + 1 efg + 1 efg+1种。
    3. d > x d > x d>x,则后三位可以取到 000 ∼ 999 000 \sim 999 000999,也就是 1000 1000 1000种。

还有一种特殊的就是要统计的是 0 0 0的出现次数,这时第一类情况就有变化,因为不能有前导 0 0 0,否则就会出现 0000 e f g 0000efg 0000efg,因此需要将高位从 001 001 001开始枚举。

当然如果统计的是数 x x x在第一位出现的次数,第一类就不存在了,因此需要判断,代码中需要注意。

同时,如果统计的是 0 0 0,那么枚举需要从第二位开始。

代码

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <vector>using namespace std;int get(vector<int> num, int r, int l)
{int res = 0;for(int i = r; i >= l; i --){res = res * 10 + num[i];}return res;
}int pow10(int x)
{int res = 1;while(x --)res *= 10;return res;        
}int count(int n, int x)
{if(!n) return 0;vector<int> num;while(n){num.push_back(n % 10);n /= 10;}n = num.size();int res = 0;for(int i = n - 1 -!x; i >= 0; i --) // 枚举这个数在哪一位上,从高位开始{if(i < n - 1) // 只有不在最高位的时候才有第一类情况{res += get(num, n - 1, i + 1) * pow10(i);if(!x) res -= pow10(i);}if(num[i] == x) res += get(num, i - 1, 0) + 1;else if(num[i] > x) res += pow10(i);}return res;
}int main()
{int a, b;while(cin >> a >> b, a || b){if(a > b) swap(a,b);for(int i = 0; i < 10; i ++)cout << count(b, i) - count(a - 1, i) << ' ';cout << endl;}return 0;
}
http://www.dtcms.com/wzjs/40511.html

相关文章:

  • 深圳做棋牌网站建设哪家好网站内部优化有哪些内容
  • 柳州做网站的网络策划方案
  • 淘宝网站建设步骤网络营销管理
  • 网络服务商和网络运营商宁波seo外包方案
  • 织梦网站如何做软件下载百度一下就知道官网
  • 怎样保存网站资料 做证据电商数据网站
  • 做微网站那pc端显示啥搜索引擎案例分析结论
  • php做的卖水果网站有哪些西安做网站哪家好
  • 承接婚庆公司网站建设合肥seo招聘
  • 网站做端口是什么四川省人民政府
  • 如何查网站是织梦做的兰州搜索引擎优化
  • 怎么做动态的实时更新的网站什么是百度搜索推广
  • 网站建设 前沿文章网站制作公司有哪些
  • 网站建设征求意见分析报告google搜索引擎入口
  • 腾讯网站站内面包屑导航网站收录情况查询
  • 动态网站 费用珠海百度关键词优化
  • seo营销网站的设计标准直销的八大课程
  • 一建建设网站首页成都今天重大新闻事件
  • 普通网站可以做商城电商大数据查询平台
  • 品牌网站建设绿d茶760关键词排名查询
  • 网站用户注册怎么做免费的推广网站
  • 彩票走势网站怎么做的怎么申请一个网站
  • 网站开发维护多少钱网络营销的基本方法
  • 网站建设好怎么发布东莞网络推广营销
  • dede微电影网站模板精准客源引流平台
  • 山东建设厅执业资格注册中心网站长沙网站优化
  • asp.net mvc5网站开发成都网站seo推广
  • 张家港做网站海外互联网推广平台
  • 西安高风险调整seo标题优化关键词怎么选
  • 网上北京网站制作公司产品软文模板