• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            我住包子山

            this->blog.MoveTo("blog.baozishan.in")

            pku 3286解題報告

            我的做法可能很弱智
            給定一個數x>0算通過每一位零出現次數的統計,算出所有的0的次數(從1到X)

            舉一個例子
            2508這個數
            首先考慮個位數
            250X  X=0;一共有250-1+1個
            25X8  X=0;一共有258-10+1個
            2X08 X=0;注意并不只有208-100+1中可能,我之前就錯在這里了,因為最大2508,所以2099-2009這百位的零我就沒有考慮到,所以這里的0有299-100+1個

            于是題目就做出來了

            輸入一個a b
            a<b
            a==0時
            b統計出零的個數然后加1(0)的個數
            否則從a 到 b的0的個數則是從1到b的0個數減去從1到a-1的零的個數
            a<10的情況我害怕出錯就分開寫了,所以整個程序有些長

            下面就是我笨拙的代碼

             1#include <iostream>
             2#include <string>
             3#include <cstdio>
             4#include <cstdlib>
             5#include <cmath>
             6using namespace std;
             7long long aarray[10]={0};
             8long long barray[10]={0};
             9long long diff[10]={0};
            10char tempstr[10= "";
            11
            12
            13int calc(std::string str,int i)
            14{
            15    //str.erase()
            16    if(i==(str.size()-1)) return 0;
            17    long long sum=0,len=str.size();
            18    int needminus = int(pow(10.0,i));
            19    //if(i!=0)str[len-i-2]+=(str[len-i-1]-'0');//new add
            20    if(str[len-i-1]=='0')
            21    {
            22    str.erase(len-i-1,1);
            23    }

            24    else
            25    {
            26        str.erase(len-i-1,i+1);
            27        str.append(i,'9');
            28    }

            29    for(int i=0;i<str.size();i++)
            30    {
            31        sum=sum*10+(str[i]-'0');
            32    }

            33    sum-=needminus;
            34    sum+=1;
            35    return sum;
            36}

            37
            38int main()
            39{
            40    unsigned int a,b;
            41    std::string tempstring;
            42    int add;
            43    while(scanf("%u %u",&a,&b))
            44    {
            45        add=0;
            46
            47        if(a==0)
            48            add=1;
            49        else {
            50            add=0;
            51            a--;
            52        }

            53        if(a==-2)
            54            break;
            55        int alen,blen;
            56        if(a<10)
            57        {
            58            aarray[0]=0;
            59        }

            60        else
            61        {
            62            _i64toa(a,tempstr,10);
            63            alen = strlen(tempstr);
            64            tempstring.assign(tempstr);
            65            for(int i=0;i<alen;i++)
            66            {
            67                aarray[i]=calc(tempstring,i);
            68            }

            69        }

            70        _i64toa(b,tempstr,10);
            71        blen = strlen(tempstr);
            72        tempstring.assign(tempstr);
            73        for(int i=0;i<blen;i++)
            74        {
            75            barray[i]=calc(tempstring,i);
            76        }

            77        for(int i=0;i<blen;i++)
            78        {
            79            diff[i]=barray[i]-aarray[i];
            80        }

            81        long long sum=0;
            82        for(int i=0;i<blen;i++)
            83        {
            84            sum+=diff[i];
            85        }

            86        
            87        cout<<sum+add<<endl;
            88        memset(aarray,0,sizeof(long long)*10);
            89        memset(barray,0,sizeof(long long)*10);
            90        memset(diff,0,sizeof(long long)*10);
            91    }

            92}


             

            posted on 2007-07-25 08:20 Gohan 閱讀(592) 評論(0)  編輯 收藏 引用 所屬分類: C++Practise

            久久www免费人成看片| 亚洲一区中文字幕久久| 久久精品这里只有精99品| 久久精品免费大片国产大片| 热综合一本伊人久久精品| 久久久久久久波多野结衣高潮 | 久久这里只有精品视频99| 日产精品久久久久久久| 久久久久久久人妻无码中文字幕爆| 国产精品久久久久…| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 久久最近最新中文字幕大全| 久久综合久久鬼色| 国内精品久久久久影院免费| 欧美久久久久久| 亚洲乱码日产精品a级毛片久久 | 亚洲愉拍99热成人精品热久久| 久久99热国产这有精品| 亚洲∧v久久久无码精品| 国产精品午夜久久| 久久中文字幕一区二区| 久久久久亚洲精品无码蜜桃| 超级97碰碰碰碰久久久久最新 | 狠狠综合久久综合中文88| 狠狠色丁香久久综合五月| 日韩人妻无码精品久久免费一 | 狠狠色婷婷久久一区二区三区| 色婷婷噜噜久久国产精品12p| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久久国产精品亚洲一区| 久久毛片一区二区| 2021国内精品久久久久久影院| 久久久久久国产精品无码下载| 丁香五月综合久久激情| 99久久夜色精品国产网站| 99久久久久| 91精品日韩人妻无码久久不卡 | 麻豆亚洲AV永久无码精品久久| 伊人久久大香线蕉综合Av| 亚洲国产精品一区二区久久hs| 狠狠色丁香久久婷婷综合蜜芽五月|