整数转换为二进制数后,所含1的个数

本文详细介绍了如何通过自定义函数计算整数转换为二进制后的1的个数,并通过实例代码加以说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;
int func(int x)             //func函数返回值是形参x转化成二进制后包含1的个数
{
	int count = 0;
		while(x)
		{
			count++;
			x = x & (x-1);
		}
		return count;
}

int main()
{
	cout<<func(999)<<endl;
	cin.get();
	return 0;
}


 

先吃饭吧(tasty) 【题目描述】 有张 n 个点 m 条边的无向图,每条边上有个小于 k 的权值 w。 在接下来的 r 天中,麻油每天都会从 1 号节点沿图中的边直走,直到走到 n 号节 点结束。将第 i 天行走过程中经过的边依次连成个 k 进制数(最先经过的在最高位), 并忽略前导零后记为 bi。 再将 b1, b2, . . . , br 依次拼为个数(b1 在最高位),得到 x。 定义 f(x) 表示 [1..x] 中有多少个数 v 满足 k 进制中不存在相邻的两位 vi−1, vi 满足 k vi+1 = k vi−1+1 或 √ vi + 1 = √ vi−1 + 1。其中 vi 表示 v 在 k 进制下的第 i 位。 现在麻油想问你,在所有可能的情况中 f(x) 可能取到的最小值。 【输入格式】 从文件 tasty.in 中读入数据。 第行包含两个正整数 n, m, k, r,表示题目描述中的 n, m, k, r。 接下来 m 行,每行输入三个数 ui , vi , wi 表示条连接 ui , vi 边权为 wi 的无向边, 保证 1 ≤ ui , vi ≤ n, 0 ≤ wi < k。保证当 1 ∈ {ui , vi} 时,wi > 0。 【输出格式】 输出到文件 tasty.out 中。 输出共行,表示在所有可能的情况中 f(x) 可能取到的最小值 mod (109 + 7) 是 多少。 【样例 1 输入】 1 3 4 3 1 2 2 1 1 3 3 2 1 4 1 2 2 5 2 3 0 【样例 1 输出】 1 3 该样例满足 1 的要求 【样例 2】 见选手目录下的 tasty/tasty2.in 与 tasty/tasty2.ans。 该样例满足 1 的要求 【样例 3】 见选手目录下的 tasty/tasty3.in 与 tasty/tasty3.ans。 该样例满足 2 的要求 【样例 4】 见选手目录下的 tasty/tasty4.in 与 tasty/tasty4.ans。 该样例满足 3 的要求 【样例 5】 见选手目录下的 tasty/tasty5.in 与 tasty/tasty5.ans。 该样例满足 4~6 的要求 【样例 6】 见选手目录下的 tasty/tasty6.in 与 tasty/tasty6.ans。 该样例满足 7~10 的要求 【样例 7】 见选手目录下的 tasty/tasty7.in 与 tasty/tasty7.ans。 该样例满足 13~15 的要求 【样例 8】 见选手目录下的 tasty/tasty8.in 与 tasty/tasty8.ans。 该样例满足 16~20 的要求 【子任务】 数据点 n k r 性质 A 1 ≤ 5 ≤ 3 ≤ 3 否 2 ≤ 2 × 104 ≤ 2 ≤ 109 3 ≤ 103 ≤ 3 4 ∼ 6 ≤ 30 是 7 ∼ 10 ≤ 109 11, 12 ≤ 3 13 ∼ 15 ≤ 30 否 16 ∼ 20 ≤ 109 性质 A: 满足 m = n − 1, ∀1 ≤ i ≤ m, ui = i, vi = i + 1 对于所有数据,满足 m ≤ 2 × 105,保证图联通,但不保证无自环且无重边。
最新发布
03-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值