求计算数中第一个1之后0 的个数

#include<iostream>
#include<string.h>
#include<cstdlib>
using namespace std;
char a[33];
int countOfZeros(int n)
{
    int count=0;
    itoa(n,a,2);
    int len=strlen(a);
    //cout<<a<<" "<<len<<endl;
    for(int i=0;i<len;i++)
        if(a[i]==‘0‘)
            count++;
    return count;
}
int main()
{
    int num;
    cin>>num;
    cout<<countOfZeros(num)<<endl;
}
时间: 2024-10-29 19:07:24

求计算数中第一个1之后0 的个数的相关文章

(c语法百题4)求两数中的较大者

知识点: if语句 内容: 求两数中的较大者 输入说明: 一行两个数 输出说明: 一行 一个 数字 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001. 3 5 输出样例 : 5 #include <stdio.h> int main() { int a,b,c; scanf("%d %d",&a,&b); if(a<b) { c=b; a=c; } printf("%d\n",a); return 0;

Jsの数组练习-求一组数中的最大值和最小值,以及所在位置

要求:求一组数中的最大值和最小值,以及所在位置 代码实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv=&

结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占用int长度空间,空数组不占任何空间.“这个数组不占用任何内存”,意味着这样的结构节省空间:“该数组的内存地址就和它后面的元素地址相同”,意味着无需初始化,数组名就是后面元素的地址,直接就能当指针使用. 这样的写法最适合制作动态buffer,因为可以这样分配空间malloc(sizeof(struc

计算数组中的逆序数(inversion)个数

今天继续学了算法,首先是一个计算数组中的逆序数的算法. 通常,很容易想到的计算办法就是运用两个for循环遍历比较整个数组,当某个数字的下标较大,而值却小于小标比它小的某个位置上的值时,逆序数+1,但是此种算法复杂度较高,随着输入数据规模的增大效率会快速下降(即输入的数组变大了),具体的复杂度计算方法如下:设数组有n个元素,则需要遍历n次,而每一次遍历中要与下标在后面的进行比较,在当次遍历中,其后具有(n-当次遍历的元素的下标)个元素,那么就需要进行n^2/2次操作(后面的元素不需要再与前面的比较

找出一组数中只出现一次的两个数,其他所有数都是成对出现的

题目: 给一组数,只有两个数只出现了一次,其他所有数都是成对出现的.怎么找出这两个数.编写函数实现. 题目分析: 上次介绍了,对于一组数中只有一个数只出现一次,其他所有数都是成对出现的,我们采用了对全部数组元素进行异或,但是对于找出两个出现一次的数应该怎么解决呢?先对所有的元素进行异或,则结果为两个出现一次的数的异或结果,然后将结果转换为二进制,找出二进制数中的第一个1,然后根据这个1的判断条件进行分组,分为两组,分别对两个组的元素进行全部异或,则就找出两个不同的数. 例如:数组中的元素为下面这

计算阶乘n!末尾所含的0的个数

问题描述 给定参数n(n为正整数),请计算n的阶乘n!末尾所含有"0"的个数. 例如,5!=120,其末尾所含有的"0"的个数为1:10!= 3628800,其末尾所含有的"0"的个数为2:20!= 2432902008176640000,其末尾所含有的"0"的个数为4. 问题分析: 显然,对于阶乘增长速度的非常快的,很容易就溢出了.当然就不可能把阶乘算出来,而是要找规律解决.下面用因式分解的思路来考虑:末尾的0可以分解为2*

JS基础:求一组数中的最大最小值,以及所在位置

1 var arr = [0, 5, -3, 6, 2, -6, 10]; 2 //定义一个最大值和一个最小值,把他们的索引值赋值给固定的两个变量 3 var maxValue = arr[0]; 4 var minValue = arr[0]; 5 var maxIndex = 0; 6 var minIndex = 0; 7 for (var i = 1; i < arr.length; i++) { 8 if(arr[i] > maxValue){ 9 //把这个元素赋值给最大值,把他对

用C++实现从键盘输入两个数a和b,求两数中的最大值

程序如下: #include<iostream> using namespace std; int main() { int max(int x,int y);   //对max函数作声明 int a,b,c; cin>>a>>b; c=max(a,b);   //调用max函数 cout<<"max="<<c<<endl; return 0; } int max(int x,int y) { int z; if(

[华为机试练习题]46.计算二进制数的0的个数

题目 描述: 输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算.不需要考虑负数的情况. 题目类别: 位运算 难度: 初级 运行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 要计算的十进制非负数 输出: 二进制中第一个1之后0 的个数 样例输入: 2 样例输出: 1 代码 /*--------------------------------------- * 日期:2015-07-03 * 作者:SJF0115 * 题目:计算二