程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 輸入一個正整數n,計算出1~n之間出現1的次數

輸入一個正整數n,計算出1~n之間出現1的次數

編輯:C++入門知識

[cpp]   //要求:輸入一個正整數n,計算出1~n之間出現1的次數   #include <iostream>   #include <math.h>   using namespace std;      void solve();   int input();   int power(int count);   void main(){       solve();       system("pause");   }      void solve(){       int n,count=0,i,sum=0;       n=input();       //count為一個計數的,來計算n是幾位數,如1則為個位數,2則為百位數       i=n;       while(i){           i=i/10;           count++;       }       while(count--){           i=(n/power(count))%10;//提取了與count對應的位           cout<<i<<endl;           if(i==1){               if(0==count)//如果對應個位                   sum+=1;               else                   sum+=n%power(count)+1;           }           else if(i>1){               sum+=power(count);           }           sum+=n/power(count+1)*power(count);       }       cout<<"一個有"<<sum<<"個1"<<endl;   }      int input(){       cout<<"請輸入您想要輸入的數字:"<<endl;       int n;       cin>>n;       if(cin.fail()){           cout<<"您輸入有誤!"<<endl;           exit(-1);       }       return n;   }      int power(int count){       int m=1;       if(count<0){           cout<<"count值有誤!"<<endl;           return -1;       }       else           while(count--)               m*=10;       return m;   }     編程之美的題目用我的方式編寫出來,很少看源程序,最多看看思路。復雜度為O(n).

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved