数的计数:找出具有下列性质数的个数

题目概述

我们要求找出具有下列性质数的个数(包含输入的自然数n):

先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理
1. 不作任何处理;
2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3. 加上数后,继续按此规则进行处理,直到不能再立生自然数为止.

输入

一个自然数n.

输出

一个整数, 总的个数.

解题思路

我不得不说, 这题意叙述得实在是...非常棒! 举个栗子说: 若n = 6, 则会有如下再生数:

6, 16, 26, 126, 36, 136

提取当前这个数的最高位x, 这个数可能产生的再生数的个数为x / 2.

将最终结果加上x / 2即可.

遇到的问题

一道AC率为83%的题貌似不会遇到什么问题 0 0

源代码

#include <iostream>  

void getNumbers(int n, int& counter) {
    counter += n / 2;
    for ( int i = 1; i <= n / 2; ++ i ) {
        getNumbers(i, counter);
    }
}  

int main() {
    int n = 0, counter = 1;  

    std::cin >> n;
    getNumbers(n, counter);
    std::cout << counter << std::endl;  

    return 0;
}

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索输入
, 个数
, 一个
, counter
, n个数
自然数
,以便于您获取更多的相关知识。

时间: 2024-08-03 18:06:58

数的计数:找出具有下列性质数的个数的相关文章

c++-求助:数组中找两个最大的数

问题描述 求助:数组中找两个最大的数 //算法一:依次扫描,分别找出A[x1]和A[x2] void max2_1(int A[], int lo, int hi, int &x1, int &x2) //1 < n = hi - lo { for(int i = lo + 1, x1 = lo; i < hi; i++) //扫描A[lo,hi),找出A[x1] { if(A[x1] < A[i]) x1 = i; //hi-lo-1=n-1 } int x2L = l

高效查数组-用最高效的方法找出大数组相同的两个数

问题描述 用最高效的方法找出大数组相同的两个数 一个数组的长度有1千多万.里面有两个数字是相同的. 用最高效的方法找出这两个数. 解决方案 遍历,用位图存储,消耗空间1000W/8

无序整数数组中找第k大的数

方法一:基于快排 1 /* 2 基于区间快排的第K小算法 ,输出a[k-1]即可,O(n*logn):每次只对后半部分递归便可把复杂度降到O(n) 3 主要思路是每次随机在数组中选取一个元素p,利用这个元素将数组分成两部分,比p小的元素在分好的数组左边,p和比p大的元素在数组右边, 4 根据k值选择在数组左半或者右半部分继续递归执行查找. 5 */ 6 #include <iostream> 7 #include <cstring> 8 #include <vector>

题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数

问题描述 谁有简单的法子做这个题,尽量不要再新建另外的数组当初面试老师喊我不要用另外的数组这样:publicstaticvoidmain(String[]args){int[]n=newint[]{42,21,2,31};int[]x=newint[n.length];System.out.println("输入移动多少位:");Scanners=newScanner(System.in);intm=s.nextInt();for(inti=0;i<n.length;i++)x[

python实现从字符串中找出字符1的位置以及个数的方法_python

本文实例主要实现给出任意字符串,获取字符串中某字符的位置以及出现的总次数. 实现该功能代码的时候可以使用函数enumerate来将字符串分离成位置和字符,然后进行比较即可. 具体实现代码如下: #!/bin/env python #-*- coding:utf-8 -*- # """ 用enumerate将string中的1都找出来, 用enumerate实现: """ def get_1_pos(string): onePos=[] try:

算法--递推策略

递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法.这种算法特点是:一个问题的求解需一系列 的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已 知条件,此种方法叫逆推.无论顺推还是逆推,其关键是要找到递推式.这种处理问题的方法能使复杂运算化为若干步重复的简单运算,充分发挥出计算机擅长于重 复处理的特点. 递推算法的首要问题是得到相邻的数据项间的关系(即递推

编程c语言-C语言里面困惑了很久的问题

问题描述 C语言里面困惑了很久的问题 我不大理解这个运算 如果要考虑相等的情况 我会全部考虑相等 可是那样也是不对的 解决方案 第二页也有笔误.然后不懂的地方在哪 解决方案二: 三个数排序哪有那么复杂.如果你一定要罗列出所有的情况,那么不妨这样假设:1.三个数不相等,有六种情况.2.三个数中,有两个数相等,有六种情况.3.三个数都相等,有一种情况.如果这样想,思路是不是清晰了许多?对于编程问题,不用想的这么详细,你只要告诉电脑,你要先找出最大的数,然后找出第二大的数,这样就能排序了. 解决方案三

《 线性代数及其应用 (原书第4版)》—— 第2章 矩 阵 代 数 2.1 矩阵运算

第2章 矩 阵 代 数 介绍性实例 飞机设计中的计算机模型 为了设计下一代的商业和军用飞机,波音的幻影工作室的工程师们使用三维建模和计算流体动力学. 他们在建造实际的模型之前,研究一个虚拟的模型周围的空气流动,这样做可以很大程度地缩短设计周期,降低成本,而线性代数在这个过程中起了关键的作用. 虚拟的飞机模型的设计从数学的线形轮廓模型开始,它存储在计算机内存中,并可显示在图形显示终端. (图示给出波音777的模型.)这个数学模型组织和影响设计和制造飞机外部和内部的每一个过程. 计算流体动力学分析主

第12周 报告1 --- 2-1000内的完数

任务1:(课本p86第20题)一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数.编程找出1000以内的所有完数. 本文先给出我做的程序,后面加上对同学们做法的点评. [第一部分 我的报告] 实验目的:学会使用循环控制语句解决实际问题,并强化注重效率的观念 实验内容:用循环控制语句编写程序,完成表达式的计算 /* 程序头部注释开始 * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算