二进制整数1的个数-取近似值-求最小公倍数
2020-06-19 本文已影响0人
华容三少
求int型正整数在内存中存储时1的个数
题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
示例
输入:5
输出:2
#include<iostream>
using namespace std;
int main()
{
int n;
while (cin >> n) {
int ret = 0;
while (n) {
if ((n & 1) == 1)
ret++;
n = n >> 1;
}
cout << ret<< endl;
}
}
取近似值
题目描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
输入描述:
输入一个正浮点数值
输出描述:
输出该数值的近似整数值
示例
输入:5.5
输出:6
#include<iostream>
#include<string>
using namespace std;
int main() {
string num;
while (cin >> num)
{
size_t pos = num.find('.');
string str = num.substr(0, pos);
int ret = atoi(str.c_str());
if (num[pos + 1] >= '5' && num[pos + 1] < '9')
cout << ret + 1 << endl;
else
cout << ret << endl;
}
}
求最小公倍数
题目描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
/*
最小公倍数 = 两数之积除以最大公约数
*/
#include<iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (b>a)
swap(a, b);
int ret = a*b;
int num = a%b;
while (num)
{
a = b;
b = num;
num = a%b;
}
cout << ret / b << endl;
return 0;
}