椤电爜0~N 锛屽叾涓?锛?....9閮藉嚭鐜颁簡鍑犳

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了椤电爜0~N 锛屽叾涓?锛?....9閮藉嚭鐜颁簡鍑犳相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/%e7%bb%93%e6%9d%9f' title='缁撴潫'>缁撴潫   mes   椤电爜   鏆村姏   main   pow   std   鍒嗘瀽   return   

/*
杩欓亾棰樼洰鍙互鏆村姏瑙g瓟锛氬1~n鐨勬瘡涓暟杩涜浠庝綆浣嶅埌楂樹綅鍒嗘瀽
涓€鏃﹁繖涓暟瀛梟um鍑虹幇,a[num]++鍗冲彲
绗簩绉嶆柟娉曪細
鐢?锛?锛?..9缁勬垚鐨勬墍鏈塶浣嶆暟锛屼粠n涓?鍒皀涓?鍏?0^n涓暟锛?锛?锛?..9
鍑虹幇鐨勬鏁颁竴鏍疯涓篴(n),閭d箞鏄撳緱锛?
a(n)=10a(n-1)+10^(n-1) (n>1) a(n)=1(n==1)鍖栫畝鍙緱鍒?
a(n)=n*10^(n-1).
閭d箞杩欓亾棰樼洰浠庨珮浣嶅埌浣庝綅渚濇澶勭悊锛屾渶鍚庡噺鍘诲浣欑殑鍓嶅闆跺嵆鍙?
*/
#include <bits/stdc++.h>
using namespace std;
int n,a[15];
void solve(int  n){
    int l =log10(n)+1;//n鐨勪綅鏁?/span>
    int p =n/(int)round(pow(10.0,l-1));//褰撳墠鐨勮繖浣嶆暟瀛?
    //0~9閮戒細鍑虹幇p*(l-1)*(int)round(pow(10.0,l-2))娆?/span>
    for(int i =0;i<10;i++) a[i]+=p*(l-1)*(int)round(pow(10.0,l-2));
    //0~p-1閮戒細鍑虹幇(int)round(pow(10.0,l-1))娆?/span>
    for(int i=0;i<p;i++)   a[i]+=(int)round(pow(10.0,l-1));
    int temp =(int)round(pow(10.0,l-1));
    temp=n%temp;
    if(temp==0) {//閫掑綊鍙互缁撴潫浜?
    //濡?2500 p鍐嶅嚭鐜颁竴娆★紝0鍐嶅嚭鐜發-1娆?/span>
        a[p]++;
        a[0]+=l-1;
        return ;
    }
    int lt=log10(temp)+1;
    if(lt!=l-1)//濡?0036
    {
       a[0]+=(l-1-lt)*(1+temp);
    }
    a[p]+=1+temp;
    return solve(temp);
}
int main(){
    
    cin>>n;
    solve(n);
    int len = log10(n)+1;
    //鍑忓幓鍓嶅闆?/span>
    for(int i =0;i<len;i++) a[0]-=(int)round(pow(10.0,i));
    //濡?1536  
    //00000~09999  0鍑虹幇浜?0000娆?
    //0000~0999    0鍑虹幇浜?000娆?
    //000~099      0鍑虹幇浜?00娆?
    //00~09        0鍑虹幇浜?0娆? 
    //鍐嶅姞涓婁竴涓?
    for(int i =0;i<10;i++) printf("%d %d
",i,a[i]);
    return  0;
}

 

以上是关于椤电爜0~N 锛屽叾涓?锛?....9閮藉嚭鐜颁簡鍑犳的主要内容,如果未能解决你的问题,请参考以下文章

浜烘湀绁炶瘽闃呰绗旇01

231. Power of Two

C 鍜?C++ 浜掔浉璋冪敤