zoukankan      html  css  js  c++  java
  • UVa 11038 有多少个0

    https://vjudge.net/problem/UVA-11038

    题意:

    输入两个非负整数m和n,求将m~n的所有整数写出来,一共要写多少个数字0?

    思路:

    举个例子来说:

    12345

    从右到左分析各位为0的情况:

    最先分析各位5,在它左边是1234,所以当各位为0时,左边可以是0~1234的任何一个数,此时有1234种情况

    接下来十位4,在它左边是123,右边可以是0~9的任何一个数,此时为123×10种情况

    可以发现每一位的情况数为left×10^i(i为右边的数字个数)

    注意:如果该位的数字时0的话,左边的数得减1,但是也别忘了加上右边的数。

    比如说:12304 就是122×10+5

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<cstdio>
     5 #include<vector>
     6 #include<stack>
     7 #include<queue>
     8 #include<cmath>
     9 #include<map>
    10 using namespace std;
    11 
    12 long long n,m;
    13 
    14 long long solve(long long n)
    15 {
    16     if(n<0)  return 0;
    17     long long ans=1,right=0,x=1;
    18     while(n>=10)
    19     {
    20         long long now=n%10;
    21         n/=10;
    22         if(now)   ans+=n*x;
    23         else  ans+=(n-1)*x+right+1;
    24         right=now*x+right;
    25         x*=10;
    26     }
    27     return ans;
    28 }
    29 
    30 int main()
    31 {
    32     //freopen("D:\input.txt","r",stdin);
    33     while(~scanf("%lld%lld",&n,&m))
    34     {
    35         if(n==-1 && m==-1)  break;
    36         printf("%lld
    ",solve(m)-solve(n-1));
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    迭代模式
    HackSeven Canvas上的动画
    模板模式
    适配器模式
    豆瓣推荐纪录片
    二手手机十分管用的检查方法
    传参的四种方法
    守夜人誓言+考研誓言
    网络小说分享
    阿里巴巴Java开发手册(详尽版) pdf
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6782140.html
Copyright © 2011-2022 走看看