求整数 1-n 总共出现1的个数 及 求整数的二进制中1的个数

2024-04-26 08:08
文章标签 二进制 个数 整数 总共

本文主要是介绍求整数 1-n 总共出现1的个数 及 求整数的二进制中1的个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

继之前博文的补充(求整数位数,正序逆序输出,总计1的个数)https://blog.csdn.net/TUJI67/article/details/80381306

//todo 求1,2,3,4...总共出现1的个数 例如n=12(1,10,11,12),返回5个
//从1开始除以10取余,若余数为1,计数器加一,直到n取余为0结束,返回计时器即为所求。
int CountAlldOne(int n)
{int count = 0;int i,j;for(i = 1,j = i;i <= n;) //i表示当前循环的次数,j表示当前操作的数{while(j != 0){if(j%10 == 1){count++;}j/=10;}i++;j = i;//每次j操作完后都变为0,需要i重新赋值}return count;
}
//统计数字的二进制中1的个数 例如8->1,5->2,11->3 int Bits(int n)
//将十进制数转换为二进制数,再用以上求所有1的方法求
int CountAllbOne(int n)
{int count = 0;int b[32]; //b[32] 表示整型的4字节(即32位,模拟二进制)int t=0;while(n != 0) //统计转为二进制后有几位,并给每一位赋值{{b[t]=n % 2;n /= 2;t++;}}int i = 0;while(i < t){count += (b[i] % 10 == 1) ? 1:0; //统计有几个1i++;}return count;
}
//统计数字的二进制中1的个数
int CountAllbOne(int n)
{int count = 0;int b[32];int t=0;while(n != 0){b[t] = n%2;n /= 2;if(b[t] == 1) //在将整数转为二进制时,直接判断每一位是否为1,是1计数器count就加一{count += 1;}t++;}return count;
}

 

这篇关于求整数 1-n 总共出现1的个数 及 求整数的二进制中1的个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937037

相关文章

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

PTA求一批整数中出现最多的个位数字

作者 徐镜春 单位 浙江大学 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。 输入格式: 输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。 输出格式: 在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n

XTU 1233 n个硬币连续m个正面个数(dp)

题面: Coins Problem Description: Duoxida buys a bottle of MaiDong from a vending machine and the machine give her n coins back. She places them in a line randomly showing head face or tail face o

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

O(n)时间内对[0..n^-1]之间的n个数排序

题目 如何在O(n)时间内,对0到n^2-1之间的n个整数进行排序 思路 把整数转换为n进制再排序,每个数有两位,每位的取值范围是[0..n-1],再进行基数排序 代码 #include <iostream>#include <cmath>using namespace std;int n, radix, length_A, digit = 2;void Print(int *A,

通信工程学习:什么是2ASK/BASK二进制振幅键控

2ASK/BASK:二进制振幅键控         2ASK/BASK二进制振幅键控是一种数字调制技术,其全称是二进制振幅键控(Binary Amplitude Shift Keying)。该技术通过改变载波的振幅来传递二进制数字信息,而载波的频率和相位则保持不变。以下是关于2ASK/BASK二进制振幅键控的详细解释: 一、2ASK/BASK二进制振幅键控的基本原理 1、振幅键控:

1 模拟——67. 二进制求和

1 模拟 67. 二进制求和 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1:输入:a = "11", b = "1"输出:"100"示例 2:输入:a = "1010", b = "1011"输出:"10101" 算法设计 可以从低位到高位(从后向前)计算,用一个变量carry记录进位,如果有字符没处理完或者有进位,则循环处理。两个字符串对

单精度浮点数按存储格式转为整数的程序

///#include<cstdio>//-----------------union int_char{unsigned char ch[4];float i;};void out_put(union int_char x)//x86是小端对其模式,即最数据的最低位存储在地址的最低位上。{printf("单精度浮点数值为:%f\n",x.i,x.i);printf("存储位置从左到右

Leetcode67---二进制求和

https://leetcode.cn/problems/add-binary/description/ 给出的两个二进制,我们可以从最后开始往前运算。 给当前短的一位前面补充0即可。 class Solution {public String addBinary(String a, String b) {//给的就是二进制字符串 最后一位开始遍历 如果没有就补充0?StringBuil

二进制的匹配问题

最近做了点搜索和背包的题目,发现这个二进制的匹配很是好用,所以写一篇二进制的匹配来作为自我总结; 首先我们要知道二进制的运算符,和他们的运算规则; ABA&BA|BA^B00000010111001111110 运算符有三种‘&’ , ‘|’ ,  ‘^'  或,且,异或,运算的规则在表中可以看到,想想这个规则我们可以做很多事情! 首先,每个十进制的数都会对应一个唯一的二进