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

            伊人久久大香线蕉综合Av| 久久精品中文騷妇女内射| 色综合久久中文色婷婷| 久久se这里只有精品| 久久精品国产亚洲AV久| 国产精品视频久久| 丁香色欲久久久久久综合网| 国产91色综合久久免费| 久久精品99无色码中文字幕| 18岁日韩内射颜射午夜久久成人| 欧美综合天天夜夜久久| 久久久久人妻一区二区三区vr| 日本精品久久久久中文字幕8 | 99久久亚洲综合精品网站| 国产成人精品久久| 国产精品青草久久久久福利99| 伊人久久五月天| 国产精品久久久久久影院| 人妻无码αv中文字幕久久琪琪布| 国产精品99久久精品| 久久精品国产乱子伦| 日韩欧美亚洲综合久久影院Ds| 色综合久久88色综合天天| 色诱久久久久综合网ywww| 久久伊人影视| 91精品日韩人妻无码久久不卡| 国产69精品久久久久久人妻精品| 日日狠狠久久偷偷色综合0| 国产精品日韩深夜福利久久| 丰满少妇人妻久久久久久| 热re99久久6国产精品免费| 久久天天躁狠狠躁夜夜2020一| 久久五月精品中文字幕| 久久精品成人| 欧美国产精品久久高清| 四虎国产精品成人免费久久| 久久久久久久亚洲精品| 久久九色综合九色99伊人| 久久久久亚洲AV成人网人人软件| 香港aa三级久久三级| 久久久久黑人强伦姧人妻|