• <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

            亚洲国产精品久久| 中文字幕亚洲综合久久菠萝蜜| 久久免费的精品国产V∧| 久久精品毛片免费观看| 天天综合久久久网| 久久只有这精品99| 99久久久精品免费观看国产| 久久国产亚洲精品麻豆| 无码国内精品久久人妻麻豆按摩| 99久久这里只精品国产免费| 国产亚洲美女精品久久久久狼| 国产高潮国产高潮久久久91 | 久久se精品一区精品二区国产| 女同久久| 久久久久中文字幕| 久久妇女高潮几次MBA| 97久久精品人人澡人人爽| AV无码久久久久不卡蜜桃| 成人精品一区二区久久 | 人妻精品久久无码区| 久久久噜噜噜久久| 久久电影网一区| 久久超乳爆乳中文字幕| 免费久久人人爽人人爽av| 久久影视综合亚洲| 久久久久中文字幕| 狠狠色丁香久久综合五月| 国产亚洲美女精品久久久2020| 久久免费国产精品| 成人精品一区二区久久久| 国产精品久久久久久影院| 国产亚洲精品美女久久久| 久久99国产综合精品免费| 亚洲国产欧洲综合997久久| 久久精品国产亚洲av麻豆图片| 色播久久人人爽人人爽人人片aV| 国产精品欧美亚洲韩国日本久久| 一本伊大人香蕉久久网手机| 青青草原1769久久免费播放| 2020最新久久久视精品爱| 亚洲天堂久久精品|