博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计1的个数
阅读量:5958 次
发布时间:2019-06-19

本文共 1323 字,大约阅读时间需要 4 分钟。

#include 
#include
using namespace std;/************************************************************************//* 输入一个数字N,计算从1到N 这N个数字中1出现的次数例如N = 2, 则1 2中1出现的次数为1N = 12, 则 1 2 3 4 5 6 7 8 9 10 11 12 中1出现的次数为5。求任意给一个N返回1的个数。1、暴力解法,从1遍历到N,求出每一个数字中1的个数,然后相加之和即为总共1的个数。2、分析:分析每一位出现1的次数,总和即为总共1出现的次数1位数时,N>=1, f(N)=1 当N<1 ,f(N)=0;2位数时,假设ab为一个二位数;分析个位b:个位1的个数为 a分析十位a:十位1的个数,若a=1, 十位1的个数为b+1,若a>1,则十位1的个数为10*//************************************************************************//*输入一个整数N,求1 2 3 。。。N中含有1的个数*/int countOnes(int N){ int iCount = 0; int iFactor = 1; int iLowerNum = 0; int iCurrNum = 0; int iHigherNum = 0; while(N/iFactor) { iLowerNum = N - (N/iFactor)*iFactor; iCurrNum = (N/iFactor)%10; iHigherNum = N/(iFactor*10); switch(iCurrNum) { case 0: iCount += iHigherNum*iFactor; break; case 1: iCount += iHigherNum*iFactor + iLowerNum +1; break; default: iCount += (iHigherNum+1)*iFactor; break; } iFactor *= 10; } return iCount;}int main(int argc, char **argv){ int N; cin>>N; cout<
<

 

本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/p/3952159.html ,如需转载请自行联系原作者

你可能感兴趣的文章
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
“=” “:=” 区别
查看>>
pwnable.kr lotto之write up
查看>>
python之UnittTest模块
查看>>
HDOJ_ACM_Rescue
查看>>
笔记纪录
查看>>
九、oracle 事务
查看>>
Git - 操作指南
查看>>
正则表达式的贪婪与非贪婪模式
查看>>
SqlServer存储过程调用接口
查看>>
DOM
查看>>
通过jQuery.support看javascript中的兼容性问题
查看>>
NYOJ-取石子
查看>>
AngularJS
查看>>
《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
查看>>
List与数组的相互转换
查看>>
Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
查看>>
socketserver模块使用方法
查看>>
json模块
查看>>
各型号英特尔CUP的功率
查看>>