求1到N之间整数中出现1的个数
来源:互联网 发布:深圳燕麦科技知乎 编辑:程序博客网 时间:2024/04/29 03:17
1、方法1
先来个例子:
n=3241
(1)千位中1的个数n/1000=3>11X1000个
(2)百位中1的个数n/100=3232的个位是2>=1(3+1)X100=400个
(3)十位中1的个数n/10=324324的个位是4>=1(32+1)X10=330个
(4)个位中1的个数n/1=32413241的个位是4>=1(324+1)X1=325个
共计1000+400+330+325=2055个
code
#include "stdafx.h"#include <iostream>#include <string>#include <stack>using namespace std; int mySum1s(int n) {int temp=n;int div=1;int cnt=0;while(temp!=0){temp/=div;div*=10;}div/=10;int a,b;while(div!=0){a=n/div;if(a>0 && a<10){if(a==1){cnt+=n-a*div+1;}else{cnt+=div;}}else{b=a%10;if(b>0){cnt+=(a/10+1)*div;}else{cnt+=a/10*div;}}div/=10;}return cnt; }int main(int arc, char** argv){int cnt=0;cnt=mySum1s(3241);cout<<cnt<<endl;system("pause");return 0;}
2、方法2
例子101
(1)个位上的1:101/10=10101%10=1>010x1+(1-0)=11
(2)十位上的1:101/100=1101%100=1<101x10+0=10
(3)百位上的1:101/1000=0101%1000=101>990+(101-99)=2
code
#include "stdafx.h"#include <vector>#include <iostream>using namespace std;int numOfOnes(int num){int n=0;int temp=num;while(temp!=0){n++;temp/=10;}int div=1;int sum=0;while(n--){div*=10;int a=num/div;int b=num%div;if(div/10-1<b && b<2*div/10){sum+=a*div/10+(b-div/10+1);}else if(b>=2*div/10){sum+=a*div/10+div/10;}else{sum+=a*div/10;}}return sum;}int main(void){int n=112;int cnt=numOfOnes(n);cout<<"The number of one is "<<cnt<<"."<<endl;system("pause");return 0;}
0 0
- 【编程之美】读书笔记:求1到N之间整数中出现1的个数
- 求1到N之间整数中出现1的个数
- 求0到n之间出现的"1"的个数
- 牛客网 求1到n 整数中1的个数
- 从1到n整数中1出现的个数
- Google经典面试题:求从1到n的n个整数中,字符“1”出现的个数
- 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。
- 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数
- 给定一个十进制n,从1开始,到n的所有整数,求出现1的个数
- 给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数
- 给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。
- 求1到N的所有整数中“1”的个数
- 求1到n这n个整数的十进制表示中1出现的次数
- 输入一个整数N,求1到N这N个整数中1出现的次数
- 求1到n之间素数的个数
- 统计从1到N的所有整数中出现1的个数
- 求整数N的二进制形式中1的个数
- 求整数n的二进制表达式中1的个数
- 有道无术,术可求也
- 湘潭邀请赛——Welcome to XTCPC
- 2014年ACM-ICPC东北赛区热身赛D题 Number
- GoldWave的消音、淡入淡出、改变音乐速率
- win7下“我的电脑” 在这里
- 求1到N之间整数中出现1的个数
- 1000!末尾 有几个0
- eclipse改变背景颜色,换个心情
- Servlet生命周期和工作原理
- 基于java的全文检索引擎的简介
- leetcode - Maximum Subarray
- 黑马程序员 Java基础 网络编程
- 华摄氏度和摄氏度的转换小数点处理 单片机
- 日期字符串(DateStr)与日期对象(Date)之间的转换