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

            国产成人精品久久亚洲| 一本久久免费视频| 国产精品久久久久天天影视| 久久久久久免费一区二区三区| 久久免费美女视频| 精品国产日韩久久亚洲| 国产精品久久久久影视不卡| 亚洲精品美女久久久久99小说| 国产午夜免费高清久久影院| 久久免费视频6| 久久国产热精品波多野结衣AV| 久久精品一区二区影院| 国产精品久久影院| 三上悠亚久久精品| 亚洲欧洲精品成人久久曰影片| 久久婷婷综合中文字幕| 亚洲婷婷国产精品电影人久久| 国产精品99久久久久久宅男| 青青草原精品99久久精品66| 伊人伊成久久人综合网777| 久久久91人妻无码精品蜜桃HD| 国产成人无码久久久精品一| 少妇久久久久久被弄高潮| 香蕉久久永久视频| 日韩中文久久| 亚洲国产日韩欧美久久| 日韩久久无码免费毛片软件| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 91精品国产91久久久久久青草| 亚洲午夜精品久久久久久app| 99久久成人18免费网站| 久久综合综合久久狠狠狠97色88| 麻豆成人久久精品二区三区免费 | 国内精品久久久久久久97牛牛| 无码久久精品国产亚洲Av影片| 久久免费99精品国产自在现线| 国产成人精品久久亚洲高清不卡 | 久久99热狠狠色精品一区| 国产精品久久久久9999| 日本福利片国产午夜久久| 91久久精品国产91性色也|