给定一个十进制的整数,写下从1开始到N的所有整数,计算其中出现的所有"1"的个数

来源:互联网 发布:华为云计算数据中心 编辑:程序博客网 时间:2024/05/16 13:38
#include<iostream>using namespace std;int Sum1s(int n){int count = 0; //记录1的个数int factor = 1; //标记,逐位计算1的个数int LowerNum = 0;int CurrNum = 0;int HigherNum = 0;while ( n/factor != 0)        //每次计算LowerNum CurrNum HigherNum的值{LowerNum = n - (n/factor) * factor;CurrNum = (n/factor) % 10;HigherNum = n / (factor*10);switch (CurrNum){case 0:count += HigherNum * factor;break;case 1:count += HigherNum * factor + LowerNum +1;break;default:count += (HigherNum +1)*factor;break;}factor *= 10;}return count;}void main(){cout<<Sum1s(5143)<<endl;}

0 0
原创粉丝点击