来源:编程之美2.4
题目:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后 数一下其中出现的所有'1'的个数。
1.写一个函数f(N),返回1到N之间出现的‘1’的个数,比如f(12)=5;
2.求满足‘f(N)=N'的最大的N是多少
这个题比较难,需要好好的找规律
public class NumbersOfOne2_4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(f(12));
System.out.println(Sum1s(999999999));
}
//解法一
public static int f(int n){
int count=0;
for(int i=1;i<=n;i++)count+=countOfOne(i);
return count;
}
private static int countOfOne(int i) {
int nums=0;
while(i!=0){
if(i%10==1)nums++;
i/=10;
}
return nums;
}
//解法2,很难想,得不断试验找规律
//当前位1的个数不仅和当前位的数值有关还各高位及低位有关
public static long Sum1s(long n)
{
long iCount=0;//出现1的总数
long iFactor=1;//乘法因子,1,10,100.。。可以获得其它位的数
long iLowerNum=0;//比当前位低的数据
long iCurrNum=0;//当前位的数
long iHigherNum=0;//比当前位高的数据
while(n/iFactor!=0)
{
iLowerNum=n-(n/iFactor)*iFactor;
iCurrNum=(n/iFactor)%10;
iHigherNum=n/(iFactor*10);
switch((int)iCurrNum)
{
case 0://当前位为0,1的个数等于高位数*10
iCount+=iHigherNum*iFactor;
break;
case 1://当前位为1,还要考虑低们为1的数
iCount+=iHigherNum*iFactor+iLowerNum+1;
break;
default://其它情况
iCount+=(iHigherNum+1)*iFactor;
break;
}
iFactor*=10;
}
return iCount;
}
}
分享到:
相关推荐
根据提供的标题、描述以及部分文件内容,我们可以提炼出与“汉字笔画数目的分类”相关的知识点。虽然实际的文本内容似乎并非清晰的汉字及其笔画数的列表,但基于题目要求,我们将尝试从已有的信息中提取并解释相关...
VMware vSphere 6.5群集报该主机的vSphere HA检测信号数据存储数目为0,不合规的情况
1. 减数分裂:减数分裂是一种特殊的细胞分裂方式,主要发生在生物的生殖细胞形成过程中。在减数分裂过程中,细胞经历两次连续的分裂,但染色体只复制一次,使得最终产生的配子(精子或卵细胞)的染色体数目减半。...
标题 "从0到N中总共1的数目" 涉及的是计算在0到N(包括0和N)这个范围内,所有整数中1出现的总数。这是一个经典的数学问题,通常可以通过位运算或者数学归纳法来解决。在编程领域,这个问题可以作为练习位操作和循环...
1. `num_est_main.asv` 和 `num_est_main.m` 可能是主程序,用于运行和展示源数目估计的整体流程。 2. `compound_matrix.m` 可能涉及到复合矩阵的生成,这在某些源数目估计方法中用于模拟信号混合过程。 3. `bic.m` ...
标题 "从0到N的数中总共包含1的数目" 指的是计算从0到一个整数N之间所有数中数字1出现的总次数。这个主题涉及到位运算、数学和编程,特别是对于十进制和二进制的转换及计数。在计算机科学中,这类问题通常出现在算法...
编程之美1的数目.pdf
"ConsoleApplication1_质数数目计算_" 这个项目显然是关于计算一定范围内的质数数量的程序实现。下面我们将深入探讨如何使用筛法来计算质数,并讨论这种算法的效率和局限性。 筛法,也称为埃拉托斯特尼筛法,是一种...
编写递归算法,计算二叉树中叶子结点的数目
1. **消息监听**:系统需要具备监听不同应用消息通知的能力。这通常通过API接口实现,允许程序在接收到新消息时发送通知给消息提醒系统。 2. **数据聚合**:系统需要收集来自各个应用的消息通知,并进行统计,以...
我做这个作业的时候发现没有可以参考的代码,于是把自己写的发出来咯。这是一个完整的程序,包括结构定义、初始化存储空间、构造邻接表和输入控制
中国柴胡属3种1变种染色体数目报道,梁乾隆,王长宝,本文对中国伞形科柴胡属3种1变种植物进行了染色体数目观察。 结果如下:秦岭柴胡(B. longicaule var. giraldii)的染色体数目为2n=2x=12;有柄�
在这个任务中,我们需要编写一个算法,根据输入的顶点数目、弧的数目以及各自的顶点和弧信息来构建有向图的邻接表。 首先,我们需要理解输入格式。通常,这种问题会通过标准输入或者读取文件来获取数据。用户会依次...
### 实现同名后数目相加的统计功能 在IT领域中,经常需要对大量数据进行统计和处理,其中一种常见的需求就是对具有相同名称的数据进行汇总计算。本篇文章将根据给定的文件标题、描述及部分内容,详细介绍如何实现一...
1356. 根据数字二进制下 1 的数目排序可以利用递推进行线性处理bits// [&bits] 表示闭包中按引用捕获 bits// 实际上是在重载 号。
1. 预测特征值阈值(PET)方法:这是一种基于协方差矩阵预计特征值极限的方法。通过计算特征值的平均上限γ,可以确定哪些特征值属于噪声子空间,进而推断出发射天线的数量。这种方法简单且计算量小,适用于多种传播...
Consider a function which, for a given whole number n, returns the number of ones required when writing out all numbers between 0 and n... Notice that f(1)=1. What is the next largest n such that f(n)=n?
求解出从给定顶点到所有顶点的最短路径 判断一个有向图g是否是一棵有向树。(任意一个顶点可能是根实验测试数据基本要求: 第一组数据: dirtree2.grp 第二组数据: grp12.grp 第三组数据: dirtree.grp 第四组数据...
1.在二叉搜索树中插入节点 2.前序、中序、后序遍历该二叉搜索树,写出遍历序列 3.输出二叉搜索树的深度、节点数目、叶子节点数目 4.退出
如果根节点既是叶节点(即没有左子节点和右子节点),函数返回1,表示找到一个叶子节点。否则,它递归地计算左子树和右子树的叶子节点数,然后将两者相加,得到整个树的叶子节点总数。 在`main()`函数中,用户被...