zoukankan      html  css  js  c++  java
  • [ZJOI2010]数字计数

    题目描述

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

    输入输出格式

    输入格式:

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

    输出格式:

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

    输入输出样例

    输入样例#1:
    1 99
    
    输出样例#1:
    9 20 20 20 20 20 20 20 20 20
    

    说明

    30%的数据中,a<=b<=10^6;

    100%的数据中,a<=b<=10^12。

    思路

    这个题一看就是数位DP嘛;

    所以,就乱搞一下就行了;

    特别的,注意0的出现次数;

    代码实现

     1 #include<cstdio>
     2 #define ll long long
     3 ll l,r;
     4 ll s[10];
     5 ll get(ll a,ll b){
     6        ll ret=0,i=1,j=b;
     7        for(ll i=1,j=b;j;j/=10,i*=10){
     8            ret+=(j/10+(j%10>a))*i;
     9            if(!a) ret-=i;
    10            if(j%10==a) ret+=b%i+1;
    11        }
    12        return ret;
    13 }
    14 int main(){
    15        scanf("%lld%lld",&l,&r);
    16        for(int i=0;i<10;i++){
    17            s[i]+=get(i,r)-get(i,l-1);
    18            if(!i&&l==1) s[i]--;
    19            printf("%lld ",s[i]);
    20        }
    21        putchar('
    ');
    22        return 0;
    23 }
  • 相关阅读:
    爬虫介绍
    HTTP请求协议
    谷歌浏览器表单提交,input填充背景
    SVN与GIT基础知识学习
    vue 开发环境搭建
    正则表达式验证
    canvas基础
    数组基础方法应用
    AJAX基础学习
    css弹性布局 --flex布局。
  • 原文地址:https://www.cnblogs.com/J-william/p/7411927.html
Copyright © 2011-2022 走看看