题目链接地址:1049. Counting Ones
特别经典的算法,仅供大家参考。
#include <iostream> #include <map> #include <queue> #include <stdio.h> #include <vector> #include <algorithm> #include <stack> #include <stdlib.h> #include <string.h> #include <math.h> #include <string> using namespace std; int c,base; int main() { int n; while(scanf("%d",&n)!=EOF){ c=0;base=1; while(n/base!=0){ int low=n%base; //当前权值的低位 int high=(n/base)/10; //当前权值的高位 int now=(n/base)%10; //当前权值位 if(now==0) c+=high*base; else if(now==1) c+=high*base+low+1; else c+=(high+1)*base; base*=10; //注意 } printf("%d\n",c); } return 0; }