课堂练习之求1到N之间的数里面含有1的个数

设计思想:

输入一个数,利用for循环,对每个数进行计算,统计该数是否含有1以及所含1的个数;

然后,对每个数的统计:通过while循环,从个位开始数,当i没有更高位时停止统计,(i/=10) ,最终输出个数。

代码:

//求1到N之间的数里面含有1的个数
#include<iostream>
using namespace std;
int main()
{
	int icount=0,i,N;
	cout<<"Please input the integer N,N="<<endl ;
	cin>>N;
	cout<<N<<endl ;
	for(i=1;i<=N;i++)
	{
		int e = i ;
		while(i!=0)
		{
			icount+=(i%10==1)?1:0;
			i/=10;
		}
		i = e ;
	}
	cout<<"其中“1”的个数为:"<<icount<<endl;
	return 0;
}

结果截图:

总结:

我只完成了第一问,利用循环思想,对每个数进行统计,这是最笨的方法,上课时说的那种方法太复杂了,我找了好久都没找出规律,所以。。

第二问要找到32位整数范围内,满足条件的“f(N) =N”的最大的N是多少。

由于我能输入的数达不到32位,所以没有完成。

时间: 2024-10-27 08:32:20

课堂练习之求1到N之间的数里面含有1的个数的相关文章

1236 - Pairs Forming LCM -- LightOj1236 (LCM) 给你一个数n,让你求1到n之间的数(a,b &amp;&amp; a&lt;=b)两个数的最小公倍数等于n有多少对这样的ab.

题意:http://www.lightoj.com/volume_showproblem.php?problem=1236 解答:http://www.cnblogs.com/linliu/p/5549544.html 素数太大用bool #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> #include<map

自然数从1到n之间,有多少个数字含有1

    问题明确而简单.for循环肯定是不好的.       用递推方法:       定义h(n)=从1到9999.....9999  ( n 个 9)之间含有1的数字的个数.定义f(n)为n位数中含有1的数字的个数.    由定义可知:h(n)=f(1)+f(2)+f(3)+....+f(n); 则f(1)=h(1)=1;   f(2)=10^1+8*h(1).   f(3)=10^2+8*h(2).   f(4)=10^3+8*h(3).   ......   意义如下:f(4)是一个四位

求1到1000之间同时能被3、5、7整除的数

求1到1000之间同时能被3.5.7整除的数 即同时成立 所以要用与运算&& 1 public class ZhengChu 2 { 3 public static void main(String[] args) 4 { 5 for (int i=0;i<=1000 ;i++ ) 6 { 7 if (i%3==0 && i%5==0 && i%7==0) 8 { 9 System.out.println("能同时被3,5,7整除数为&quo

1105: 零起点学算法12——求2个日期之间的天数

1105: 零起点学算法12--求2个日期之间的天数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 4404  Accepted: 1985[Submit][Status][Web Board] Description 水题 Input 输入2个日期,日期按照年月日,年月日之间用符号-隔开(题目包含多组数据) Output 求出这2个日期之间的天数(不包括自身),每组测试数据一行 Sample I

1106: 零起点学算法13——求2个时间之间的分钟数

1106: 零起点学算法13--求2个时间之间的分钟数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 4320  Accepted: 1602[Submit][Status][Web Board] Description 水题 Input 输入2行,分别是2个时间,时间小时与分钟之间用:隔开(题目包含多组测试数据) Output 输出之间的分钟数(每组测试数据一行) Sample Input 12

作业1:求500到1000之间有多少个素数,并打印出来

首先要知道什么是素数:所谓素数是指除了1和它本身以外,不能被任何整数整除的数. 数学里判断一个数n是否是素数,用n除以从2到这个数开方后所能取得最大整数,如果都不能整除,就说明这个数是素数. 所以这里我们用两层循环遍历 1 package com.etc; 2 public class IsSushu { 3 /** 4 * 第一题作业:求500到1000之间有多少个素数,并打印出来 5 * @param args 6 */ 7 public static void main(String[]

求两个日期之间间隔的天数,Python实现

代码如下 1 def leap_year(y): #判断是否是闰年 2 if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0: 3 return True 4 else: 5 return False 6 7 def days_in_month(y, m): #判断每个月都有几天 8 if m in [1, 3, 5, 7, 8, 10, 12]: 9 return 31 10 elif m in [4, 6, 9, 11]: 11 return 30

js 求两个日期之间相差天数

//求两个日期之间的相差天数 function daysBetween(DateOne, DateTwo) { var OneMonth = DateOne.substring(5, DateOne.lastIndexOf('/')); var OneDay = DateOne.substring(DateOne.length, DateOne.lastIndexOf('/') + 1); var OneYear = DateOne.substring(0, DateOne.indexOf('/

8.求出100~230之间所有素数之和,先在屏幕上输出,再求和

#include <iostream>#include <cmath>//可以使用一些内置函数using namespace std;int isprime(int x);int main(){    int m,n;    for(m=101;m<230;m++)    {       if(isprime(m))            cout<<m<<endl;    }    for(m=101;m<230;m++)    {