二进制整数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;
}
上一篇下一篇

猜你喜欢

热点阅读