使用bitset做此题
时间: 2023-07-24 08:59:12 浏览: 126
基于C++ bitset常用函数及运算符(详解)
5星 · 资源好评率100%
使用bitset可以简化对S取值种类数的计算。我们可以创建一个大小为10000的bitset,其中每个位代表一个可能的S取值。初始时,所有位都被设置为0。
对于每个整数的取值范围[Li, Ri],我们可以将对应的位[L^2, R^2]设置为1,表示S可以取到这个值。最后,我们只需要统计bitset中值为1的位的数量,即为S取值的种类数。
以下是使用bitset的示例代码:
```cpp
#include <iostream>
#include <bitset>
using namespace std;
int main() {
int n;
cin >> n;
bitset<10001> values; // 创建一个大小为10000的bitset
while (n--) {
int L, R;
cin >> L >> R;
for (int i = L; i <= R; i++) {
values.set(i * i); // 设置对应的位为1
}
}
cout << values.count() << endl; // 统计值为1的位的数量,即S取值的种类数
return 0;
}
```
注意,由于题目中给定的整数范围是[1, 100],所以我们创建的bitset大小为10000。如果题目中给定的整数范围更大,需要相应调整bitset的大小。
阅读全文