1833: [ZJOI2010]count 数字计数

Time Limit: 3 Sec  Memory Limit: 64 MB
Submit: 3528  Solved: 1553
[Submit][Status][Discuss]

Description

给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。

Input

输入文件中仅包含一行两个整数a、b,含义如上所述。

Output

输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。

Sample Input

1 99

Sample Output

9 20 20 20 20 20 20 20 20 20

经典题,数位dp,求0的个数可以最后用数字总数与1-9数字个数相减

#include<stdio.h>
#define LL long long
char str[20];
LL len, dp[10][20], ans1[15], ans2[15];
LL Sech(int x, int t, int flag);
LL Zero(LL c);
LL Jud(LL k, int x);
LL Pow(int k)
{LL sum = 1;while(k--)sum *= 10;return sum;
}
int main(void)
{LL a, i, j, b, sum1, sum2;for(i=1;i<=9;i++)for(j=0;j<=19;j++)dp[i][j] = -1;while(scanf("%lld%lld", &a, &b)!=EOF){sum1 = sum2 = 0;for(i=1;i<=9;i++){ans1[i] = Jud(b, i), ans2[i] = Jud(a-1, i);sum1 += ans1[i], sum2 += ans2[i];}printf("%lld", Zero(b)-sum1-Zero(a-1)+sum2);for(i=1;i<=9;i++)printf(" %lld", ans1[i]-ans2[i]);printf("\n");}return 0;
}LL Zero(LL c)      //统计有多少个数字,那么0的个数就是数字总数-∑数字1-9个个数
{int len;if(c==0)  return 0;LL temp = c, sum = 0;for(len=0;c>0;c/=10)len++;sum += (temp-Pow(len-1)+1)*len;while(--len)sum += 9*Pow(len-1)*len;return sum;
}
LL Jud(LL k, int x)
{int len = 0;while(k){str[++len] = k%10+'0';k /= 10;}str[len+1] = '\0';return Sech(x, len, 1);
}LL Sech(int x, int len, int flag)
{int u, i, j;LL k, ans;if(len==0)return 0;if(flag==0 && dp[x][len]!=-1)return dp[x][len];u = flag? str[len]-'0':9;ans = 0;for(i=0;i<=u;i++){if(i==x){if(flag && i==u){k = 0;for(j=len-1;j>=1;j--)k = k*10+str[j]-'0';ans += ++k;}elseans += Pow(len-1);}ans += Sech(x, len-1, flag && i==u);}if(flag==0)dp[x][len] = ans;return ans;
}

bzoj 1833: [ZJOI2010]count 数字计数(数字0-9的个数)相关推荐

  1. BZOJ 1833 ZJOI2010 count 数字计数 数位DP

    题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...

  2. BZOJ 1833: [ZJOI2010]count 数字计数

    1833 思路:数位dp 代码: #include<bits/stdc++.h> using namespace std; #define fi first #define se seco ...

  3. 1833: [ZJOI2010]count 数字计数

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2951  Solved: 1307 [Submit ...

  4. BZOJ 2111 [ZJOI2010]Perm 排列计数:Tree dp + Lucas定理

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2111 题意: 给定n,p,问你有多少个1到n的排列P,对于任意整数i∈[2,n]满足P[i ...

  5. [BZOJ 2111][ZJOI2010]Perm 排列计数(Lucas定理)

    Description 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic ...

  6. 【bzoj 1833】【codevs 1359】 [ZJOI2010]count 数字计数(数位dp)

    1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 2774  Solved: 1230 [Submit ...

  7. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)

    1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...

  8. 单片机c语言数字计数程序,如何使用单片机制作一个手动计数器

    1.实验任务 利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个 ...

  9. php sprintf 后面补0,PHP数字前补0的自带函数sprintf 和number_format的用法(详解)

    下面小编就为大家带来一篇PHP数字前补0的自带函数sprintf 和number_format的用法(详解).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 很多时候我们 ...

最新文章

  1. 服务器控件开发——组合控件(5)
  2. memcache的安装及管理
  3. javaweb使用 数据库连接池 DBCP,实现对数据库驱动使用优化,多个 action共用一个数据库连接
  4. 【终极方法】This method must return a result of type boolean
  5. springboot接收get和post请求参数
  6. OpenJudge NOI 1.6 07:有趣的跳跃
  7. oracle+执行变量语句,ORACLE sql 语句的执行过程(SQL性能调整)
  8. vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb
  9. ant编译mysql驱动
  10. Gitlab+Jenkins学习之路(四)之gitlab备份和恢复
  11. HDX|FDX-B格式面板式动物电子耳标阅读器|读卡器HX-L8160系列MODBUS RTU 协议与通信说明
  12. android-sdk环境变量配置
  13. android smb windows,Android使用SMB协议共享电脑内文件方法
  14. 计算机语言的拼音,语言拼音_语言的拼音和组词_怎么写语言拼音
  15. Android播放音频到耳机,Android应用开发之android插入耳机状态使用扬声器外放音乐...
  16. 【斯坦福大学公开课CS224W——图机器学习】二、图机器学习中的传统方法(2)
  17. 软件测试工作中有哪些常用的工具?
  18. 物联网应用案例选编:中期科技ZONTREE 场馆商超 智慧公厕 智慧厕所 的项目
  19. Windows10关闭自动更新的多种方式
  20. win10扬声器红叉_刚装了win10 小扬声器红叉没声音

热门文章

  1. python必背代码-Python中期学者必看:让你的python代码更高效灵活
  2. python自动化办公excel-Python自动化办公系列之Python操作Excel
  3. 未来语音识别技术的发展趋势将会怎样
  4. App开发定制的种类:企业需要开发哪种App?
  5. java url压缩_URL压缩算法的短地址
  6. pandas折线图x轴显示不全_python - 为什么在Geopandas中显示折线图时会忽略绘图顺序 - 堆栈内存溢出...
  7. 《嵌入式》复习资料公共版
  8. android skype 无法用蓝牙耳机,Skype发布更新 增加蓝牙耳机稳定性
  9. 在下列集成电路说法中不正确_教孩子正确认识性别,保护个人隐私,对成长中的尴尬行为说不...
  10. 64位ubuntu能安装mysql数据库_Ubuntu操作系统下安装MySQL数据库的方法