Openjudge-计算概论(A)-1的个数

描述:

给定一个十进制整数N,求其对应2进制数中1的个数输入第一个整数表示有N组测试数据,其后N行是对应的测试数据,每行为一个整数。输出N行,每行输出对应一个输入。样例输入

4
2
100
1000
66

样例输出

1
3
6
2思路:本题很简单辗转相除判断如果是1,计数器++就得了,没什么好好讲的。不过要特别注意:0要单独考虑,否则会超时的!!代码如下:
 1 #include<stdio.h>
 2 int main()
 3 {
 4    int n,a,i,t;
 5    scanf("%d",&n);
 6    for(i=0;i<n;i++)
 7     {
 8       t=0;//计数器
 9       scanf("%d",&a);
10       if(a==0) printf("0\n");//如果是0,输出(这一步很重要)!!
11       else
12       {
13           while(a!=1)
14       {
15           if(a%2==1)
16           {
17           t++;
18           }
19           a=a/2;
20       }
21       t++;
22       printf("%d\n",t);
23          }
24     }
25     return 0;
26 }
 
时间: 2025-01-02 06:47:27

Openjudge-计算概论(A)-1的个数的相关文章

计算概论(A)/基础编程练习2(8题)/7:整数的个数

1 #include<stdio.h> 2 int main() { 3 int k,temp,n[3] = {0}; 4 5 // 输入k个正整数 6 scanf("%d",&k); 7 8 // 循环读入和进行算术 9 while(scanf("%d",&temp)!=EOF) { 10 switch(temp) { 11 case 1: 12 n[0]++; 13 break; 14 case 5: 15 n[1]++; 16 br

计算概论(A)/基础编程练习2(8题)/5:点和正方形的关系

1 #include<stdio.h> 2 #include<math.h> 3 int main() { 4 // 输入坐标 5 float x, y; 6 while(scanf("%f %f", &x, &y) != EOF) { 7 // 计算坐标点与原点的欧氏距离 8 float dist=sqrt(x*x+y*y); 9 10 /* 11 // 简单判断横坐标和纵坐标的截距abs(x).abs(y)和与原点距离dist 注意:abs(

计算概论(A)/基础编程练习2(8题)/1:求平均年龄

1 #include<stdio.h> 2 int main() { 3 // 声明与初始化 4 int n, count=1, s=0, age=0; 5 6 // 输入学生人数 7 scanf("%d", &n); 8 9 // 循环读入 加和 10 while(count<=n) { 11 scanf("%d",&age); 12 s+=age; 13 count++; 14 } 15 16 // 计算平均年龄输出 17 pr

计算概论(A)/基础编程练习(数据成分)/1:短信计费

1 #include<stdio.h> 2 int main() { 3 // 输入当月发送短信的总次数n和每次短信的字数words 4 int n,words; 5 scanf("%d",&n); 6 float price=0.0; 7 8 while(scanf("%d",&words)!=EOF) { 9 // 所发送的短信超过了70个字,则会按照每70个字一条短信的限制把它分割成多条短信发送 10 price+=(words%7

计算概论(A)/基础编程练习1(8题):1:大象喝水

计算概论(A)/基础编程练习1(8题)/1:大象喝水 地址:http://pkuic.openjudge.cn/base1/1/ 1 #include<stdio.h> 2 int main() { 3 /* 圆周率常数 */ 4 const float Pi = 3.14159; 5 6 /* 深h厘米 半径r厘米 均为整数 */ 7 int h, r; 8 scanf("%d %d", &h, &r); 9 10 /* 一桶水的升数 1升 = 1000毫

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

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

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

计算数组的逆序对个数

问题:给定一个数组A,A存有n个互不相同的整数.定义:若i<j且A[i]>A[j],则称(i,j)为A的一个逆序对(inversation).设计一个O(nlogn)算法求A中逆序对个数. 显然最坏情况下逆序对有n(n-1)/2个,如;5 4 3 2 1完全逆序,逆序对有(5-1)*5/2=10对.若用暴力来求解,则时间复杂度为O(n2),显然比这不是一个好的算法.下面考虑用归并排序的类似方法来解决这个问题. 首先,对于一个长度为n的数组A[0...n-1],我们可以将它分为两个长度为n/2子

计算二进制数的0的个数

描述:  输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算.不需要考虑负数的情况. 题目类别:  位运算  难度:  初级  运行时间限制: 无限制 内存限制: 无限制 阶段:  入职前练习  输入: 要计算的十进制非负数 输出: 二进制中第一个1之后0 的个数 样例输入: 2 样例输出: 1 完整代码: #include <iostream> using namespace std; int main() { int n; int cnt=0;

【北大先修课】计算概论(A)题库全代码

题目很水就是全都是坑真是丧心病狂啊 把代码留下造福后来人QωQ 结构体与链表练习 生日相同2.0 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #define MAXN 200 using namespace std; struct st { int m,d; string name; bool operator&