程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 1049. Counting Ones (30)

1049. Counting Ones (30)

編輯:C++入門知識

經典的一道數1的面試題,詳細推論以及證明在其他很多博客上都有,講的都很好 看了下所有的PAT考試,裡面涉及到的算法和數據結構還是比較集中的。 因為PAT測試面向企業,所以還是比較喜歡出經典面試題,而在面試中要考察綜合性的編程能力的話,鏈表和樹相關操作 都是常考的。   [cpp]  #include <iostream>      int Count(int n)   {       int ans = 0;       int base = 1;       //count "1" in every digit, then sum       while (n/base != 0)       {           int right = n%base;//low digit           int left = n/(base*10);//high digit           int now = (n/base)%10;//current digit           if (now == 0)//current digit 0, then only determined by high digit               ans += left*base;           else if(now == 1)//current digit 1, then determined by both high and low digit               ans += left*base+right+1;           else//current digit > 1                ans += (left+1)*base;           base *= 10;       }       return ans;   }   int main()   {       int n;  www.2cto.com     while(scanf("%d",&n)!=EOF)       {           int ans = Count(n);           printf("%d\n", ans);       }       return 0;   }    

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