给出一段区间a-b,统计这个区间内0-9出现的次数。

 
比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次。
Input
两个数a,b(1 <= a <= b <= 10^18)
Output
输出共10行,分别是0-9出现的次数
//给定一个数 求他百位上面出现k的次数 自行枚举找规律
//比如求0的次数
//那么分为 =0 和 > 0的情况
//=0 比如 1029 百位 出现0的有 1000-1029 30个 (before-1)*100 + after+1
//>0 比如 1129 百位 出现0的有 1000-1099 100个 (before)*100
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[]; ll Count(ll x,ll k)
{
ll i =;
ll res =;
ll before = , cur= ,after =;
while ((x/i))
{
cur = (x/i)%;
before = x/(i*);
after = x-(before*+cur)*i;
if(cur == k)
res += before*i +after+;
else if(cur < k)
res += before*i;
else
res += (before+)*i;
i*=;
}
return res;
} ll Count0(ll x)
{
ll i =;
ll res =;
ll before = , cur= ,after =;
while ((x/i))
{
cur = (x/i)%;
before = x/(i*);
after = x-(before*+cur)*i;
if(cur == )
res += (before-)*i +after+;
else
res += before*i;
i*=;
}
return res;
} int main ()
{
ll a,b;
cin >> a >> b;
dp[] = Count0(b) - Count0(a-);
cout<< dp[] <<endl;
for(int i=;i<=;i++){//统计出来1 - 9的数量了
dp[i] = Count(b,i) - Count(a-,i);
cout<< dp[i] <<endl;
}
//差一个数字0的数量 }

最新文章

  1. python网络爬虫 新浪博客篇
  2. Xamarin.Android之简单的抽屉布局
  3. 记录-div绝对定位针对手机浏览器的区别
  4. Centos6.7安装docker1.7.1
  5. Navi.Soft30.产品.格式化.操作手册
  6. 我遇到的CocoaPods的问题(也许后期会解决,持续更新)
  7. JDK中的并发bug?
  8. UITextView限制字数与行数
  9. linux 搭建hexo博客
  10. (3)Spring定时任务的几种实现
  11. 取消掉Transfer-Encoding:chunked
  12. linux exec函数家族
  13. 组合数学及其应用——格路径与Schroder数
  14. WSGI的理解
  15. 基于visual Studio2013解决面试题之0908最大连续数字串
  16. 表空间与数据文件Offline,online的区别
  17. 用DataRelation给多个DataTable建立关系并显示到TreeView
  18. SDL2源代码分析1:初始化(SDL_Init())
  19. C#解压文件,Excel操作
  20. python字典去重

热门文章

  1. iOS tableview上放textfield
  2. android系统自带图标
  3. java如何随机生成定长的字符串
  4. Oracle正在执行和执行过的SQL语句
  5. CodeForces 17D Notepad(同余定理)
  6. pymysql executemany
  7. Andrew Ng机器学习公开课笔记 -- Generative Learning algorithms
  8. Can you solve this equation?---hdu2199(二分)
  9. Python开发【笔记】:为什么pymysql重连后才能查到新添加的数据
  10. SQL基础--查询之三--嵌套查询