• <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 閱讀(606) 評論(0)  編輯 收藏 引用 所屬分類: C++Practise

            久久青青草原亚洲av无码app| 久久精品国内一区二区三区| 99精品国产免费久久久久久下载| 欧美黑人激情性久久| 久久精品国产亚洲AV麻豆网站| 国产激情久久久久影院小草| 偷窥少妇久久久久久久久| 国内精品伊人久久久久AV影院| 久久国产精品免费一区| 久久国产热精品波多野结衣AV| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久精品国产色蜜蜜麻豆| 国产精品嫩草影院久久| 蜜臀久久99精品久久久久久小说| 99久久精品免费| 久久综合中文字幕| 亚洲AV日韩AV天堂久久| 久久久久99这里有精品10| 99久久精品九九亚洲精品| 久久精品国产只有精品2020| 久久久噜噜噜www成人网| 少妇熟女久久综合网色欲| 欧美精品福利视频一区二区三区久久久精品 | 国产午夜精品久久久久九九| 无码人妻久久一区二区三区免费丨| 久久无码AV中文出轨人妻| 久久久久久久99精品免费观看| 久久无码人妻一区二区三区午夜| 亚洲国产精品无码久久久不卡| 久久久亚洲欧洲日产国码是AV | 日产精品久久久久久久| 免费一级做a爰片久久毛片潮| 久久国产视屏| 日韩欧美亚洲综合久久影院Ds| 香港aa三级久久三级| 国产午夜精品理论片久久| 精品久久人人爽天天玩人人妻| 久久久久亚洲AV成人网| 日韩久久久久中文字幕人妻 | 欧美精品一区二区精品久久| 久久婷婷国产麻豆91天堂|