• How Many O's? UVA


    这个题个人感觉有点难,不容易理解。

    题意 给你两个数,n,m,找出从n到m所有的数一共包含几个0,看似简单,包含0的不就都是整数么,然后就用暴力循环来找,绝对TL。我自己写这题也没有什么好的办法,没有头绪,也是听别人讲的才明白这个方法,确实厉害。

    剥离锁位(名字什么随便起的,下面代码思路及注释)

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    typedef long long LL;
    LL OO(LL left)//此外函数即为本题核心代码及思想。只看代码的话不容易理解,自己找点小的数代入用这个方法解解看,就会明白了。以后类似的找包含别的数字的个数题就可以用这种方法。
    {
        LL n=1,mid,right=0,s=0;//从个位开始剥离,依次锁位,就是先定个位为0算有多少个,再定十位为0,算有多少个,以此类推往后算,需要注意每次都不要忘记右侧的数的界限,还有右侧的个数不要忘记加上就可以了
        while(left>9)
        {
            mid=left%10;
            left/=10;
            if(mid==0)
                s+=(left-1)*n+right+1;
            else
                s+=left*n;
            right=right+mid*n;
            n*=10;
        }
        return s;
    }
    int main()
    {
        LL i,n,m,a,b,s;
        while(scanf("%lld%lld",&m,&n),m!=-1&&n!=-1)
        {
            a=OO(m-1);
            b=OO(n);
            s=b-a;
            if(m==0)
                s++;
            printf("%lld
    ",s);
        }
        return 0;
    }
  • 相关阅读:
    web页面中四种常见必测控件
    python03
    python基础2
    python基础
    如何定位测试用例的作用?
    需求测试的注意事项有哪些?
    性能测试的流程?
    简述bug的生命周期?
    Python字符串
    Python基础语法
  • 原文地址:https://www.cnblogs.com/nr1999/p/8474546.html
Copyright © 2020-2023  润新知