一本書n頁的頁碼連續編號,則數字0到9在頁碼中各出現多少次?用c++程式設計

塵封的記憶0發表於2017-03-07

一本書n頁的頁碼連續編號,則數字0到9在頁碼中各出現多少次?用c++程式設計,n自己輸入,多次資料:程式碼如下:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
void  statNum(long long sn[10], long long n)
{
    long long i, c, k, s, pown;
    for(int i = 0; i < 10; i++)
        sn[i] = 0;
    for(k=s=0, pown=1; n > 0; k++, n /=10, pown *=10)
    {
        c = n%10;
        //先補0
        //統計從個位算起前k位 0 ~ 9 個數
        for(i=0; i < 10; i++)
            sn[i] += c*k*pown/10;
       //  統計第k+1位出現 0 ~ (c-1) 個數
        for(i=0; i < c; i++)
            sn[i] += pown;
       //  統計第k+1位出現 c 個數
        sn[c] += 1 + s;

        //  去掉第k+1位補 0 個數
        sn[0] -= pown;
        s += c*pown;
    }
}
int  main(int argc , char *argv[])
{
    long long sn[10], i,n;
    while(cin>>n)
        {
          if(argc > 1)
        n = atoi(argv[1]);

    statNum(sn, n);
    for(i=0; i < 10; i++)
        cout<<sn[i]<<endl;

    }

        return 0;
}

不懂的可以加我的QQ群:261035036(IT程式設計師面試寶典

群) 歡迎你到來哦,看了博文給點腳印唄,謝謝啦~~


相關文章