`
20386053
  • 浏览: 461468 次
文章分类
社区版块
存档分类
最新评论

从1数到n,1出现多少次,有多少个1的问题,想了好长时间,才写出这个。算的速度还是可以的

 
阅读更多
今天看了一本书,上面说,如果你想编程,就要先把自己想做的先写在纸上,然后按流程去做。
我才突然发现,为什么我解决不了这个问题,原来,我一直在用脑子想,脑子再聪明也记不住所有环节。特别是编程。里面要注意的太多了。所以我就写了一份流程。在写的时候,就把问题给解决了,然后把源码打上,呵呵,原来一切如此简单。



#include<iostream>
usingnamespacestd;



intquan(long);//求一个数的位数,也称这个数的最高权
intbit(long);//求一个数最高的位上面的数;
longsumhigh(long);//砍掉一个数的最高位;
longpow(intx,inty);//算一个数的正整数幂



intmain()
...{

longa,b,c,high,d;//a,是放输入数的,b是放结果的,c是放过程结果的,high是最高位
inty;//d是放a的值,y是放最高位的

cout
<<"请输入一个整数,我们将判断它包含的数中有多少个1: ";
cin
>>a;

d
=a;
b
=0;
high
=0;
for(longi=quan(a);i>0;--i)
...{


if(quan(a)<i)y=0;

elsey=bit(a);


if(y==1)
...{
c
=high*pow(10,i-1)+sumhigh(a)+1;
b
=b+c;
}


elseif(y>1)
...{
c
=high*pow(10,i-1)+pow(10,i-1);
b
=b+c;
}

elseif(y==0&&i!=1)
...{
c
=high*pow(10,i-1);
b
=b+c;
}

elseif(y==0&&i==1)
...{
c
=high;
b
=b+c;
}


high
=d/pow(10,i-1);
if(y!=0)a=sumhigh(a);

}


cout
<<"包含1的个数有:"<<b<<"";



}



intquan(longx)
...{
boola=true;
intb=0;
do
...{
if(x<1)
...{
a
=false;
}

else
...{
x
=x/10;
b
++;
}

}
while(a);
returnb;
}


intbit(longx)
...{
inta,b=1;
do
...{
if(x>=10)
...{
x
=x/10;
}

elseb=0;
}
while(b);
returnx;
}


longsumhigh(longx)
...{
longa;
a
=x-bit(x)*pow(10,quan(x)-1);
returna;
}


longpow(intx,inty)
...{
longa=1;
if(y>0)
...{
for(inti=0;i<y;++i)
...{
a
=a*x;
}

}

elseif(y==0)a=1;


returna;
}
分享到:
评论

相关推荐

    算法实习:分治算法求n个数的数组中找出第二个最大元素

    这类问题不仅有助于理解数据结构的基本概念,也是评估算法效率和复杂度的良好案例。本文将探讨如何使用分治策略来解决一个特定的问题——在一个包含n个整数的数组中找到第二大的元素。 #### 分治算法原理 分治...

    C语言--写一个函数,判断一个整数是否为回文数,是返回1,不是返回0(如果一个整数,从左右来读都一样,就称它为回文数

    可以使用两个指针,一个从开头(`str[0]`),另一个从结尾(`str[strlen(str) - 1]`)开始移动: ```c int start = 0; int end = strlen(str) - 1; while (start ) { if (str[start] != str[end]) { return 0;...

    算法分析与设计习题集答案

    21、 对于下图给出的有向网,写出用Dijkstra方法求从顶点A到图中其它顶点的最短路径的算法,并写出执行算法过程中顶点的求解次序及从顶点A到各顶点路径的长度。 22、 对于上图给出的有向图,写出最小成本生成树,...

    仅遍历一次得到链表的倒数第n个结点

    总的来说,解决"仅遍历一次得到链表的倒数第n个结点"的问题,需要理解和运用链表的特性和双指针技巧,这是一种在数据结构和算法面试中常见的问题,能够很好地考察候选人的逻辑思维和编程能力。在实际的编程练习中,...

    C++实现青蛙过河问题

    青蛙过河问题是一个经典的算法问题,要求我们计算出在给定石柱数和荷叶数的情况下,能够跳过河的最大青蛙数。 一、问题描述 青蛙过河问题可以被描述如下:有一队青蛙从小到大,编号为 1, 2, …, n。这些青蛙最初都...

    线性时间选择算法(附完整的代码,结合例题详细解析) 全套资源已打包好,求抱走!!!

    给定一个包含n个元素的一维线性序列a[p:r],从这n个元素中找出第k小的元素,1&lt;=k&lt;=n。设a[0:14]={2,9,11,3,14,7,10,8,15,4,13,1,6,5,12},k = 8,采用线性时间选择算法解决该问题。 1)写出算法实现代码并截屏程序...

    你必须知道的495个C语言问题

    中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 3.12 我不想学习那些...

    1. 写出《宽带网络性能分析》第350页 公式A-36的详细推导过程

    公式A-36是宽带网络性能分析中的一...这个公式给出了在M/M/1模型下,队列平均长度E(n)与到达数据包的方差E(v^2)的关系。在实际网络性能分析中,它有助于预测和优化网络资源的利用率,以及调整网络配置以提高服务质量。

    《你必须知道的495个C语言问题》

    中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 38  3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 38  3.12 我不...

    用贪心算法求解删数问题

    在“删数问题”中,目标是给定一个n位正整数a和一个正整数k,找到一种删除k个数字的方式,使得剩下的数字按照原顺序组成的新的正整数最小。这个问题可以通过贪心策略来解决,具体策略是优先删除最近下降点的数字,也...

    FX2N-PLC -MODBUS 通信手册

    - M8063的上延可以检测出通信指令本次通信的错误信息,D8063的值代表不同的错误代码,例如6315表示从站号超出范围,6316表示读写寄存器个数超出范围等。 #### 四、MODBUS指令示例 1. **读取从机数据指令** - RD3...

    2019信工所国重笔试1

    第五个问题是100个开关以1到100编号,控制着100个灯泡,初始状态均为熄灭状态,第一次按下所有编号为1的倍数的开关,第二次按下所有编号为2的倍数的开关,以此类推,第100次按下所有编号为100的倍数的开关,问最后有...

    STM32延时子程序1ms、1s

    根据提供的文件信息,本文将围绕“STM32延时子程序1ms、1s”这一主题展开讨论,旨在帮助读者理解如何通过软件手段实现高精度的延时功能。 ### STM32简介 STM32是意法半导体(STMicroelectronics)推出的一系列基于...

    C++题目数素数代码+详细注释

    输出从 PM​ 到 PN​ 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。 输入样例: 5 27 输出样例: 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 ...

    算法分析与设计——最接近点对问题 (一、二维)详细解答,附完整代码!! 看这一篇就够啦!!!

    给定平面上n个点,找其中的一对点,使得在n个点组成的所有点对中该点对间的距离最小。 2.实验目的 1)掌握递归与分治法的基本思想及基本原理。 2)掌握使用分治法求解问题的一般特征及步骤。 3)掌握分治法的设计方法...

    FFT变换的MATLAB程序实现

    这意味着在1秒的采样时间内,FFT可以解析到1Hz的频率变化。若要提高频率分辨率,需要增加采样点数或延长采样时间。 FFT结果的对称性意味着我们通常只关注前半部分,即小于采样频率一半的结果,这部分包含了信号的...

    实际问题与二元一次方程组应用题归纳整理.doc

    一般来说,有几个未知数就列出几个方程,所列方程必须满足:(1)方程两边表示的是同类量;(2)同类量的单位要统一;(3)方程两边的数值要相等。 知识点二:列方程组解应用题中常用的基本等量关系 1. 行程问题: * ...

    第四章四元组求log2n1

    q7将1个“1”改写为a q8复写a后的状态 q9移动到a段最右侧 q10右移到1段最右侧 q11将最右侧1改为b q12复写b后的状态 q13移动到b段的左侧字符 q14移动至1段最左侧 q15将a改写为B q16复写B后的状态 q17将b改写为1 q18...

    2014年同等学力计算机综合真题(自解答案解析)1

    - 第1题,从A到B的单射函数有2^3=8个,非单射函数包括满射和非满射,满射有2种,非满射通过列举得出有4种。 - 第2题,通过等价关系R,可以将集合A分为3个子集{1,5},{2,3,6},{4},形成划分。 - 第3题,偏序集的...

Global site tag (gtag.js) - Google Analytics