BZOJ2986如何运用容斥原理解决非平方数问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计316个文字,预计阅读时间需要2分钟。
题目要求求解第 \( n \) 个不是平方数的非零平方根的平方数 - 1 的平方根。
1. 首先求出第 \( n \) 个不是平方数的非零平方根的平方数,记为 \( m \)。
2.计算 \( m \) 的平方根,记为 \( \sqrt{m} \)。
3.最后输出 \( \sqrt{m} \)。
例如,当 \( n=1 \) 时,\( m=2^2=4 \),所以 \( \sqrt{m}=2 \)。
请注意,这个解法适用于 \( n \leq 10^{10} \) 的情况。
题意求第\(n\le10^{10}\)个不是无平方因子数二分答案容斥一下0个质数的平方因子-1个..枚举\(\sqrt{mid题意求第\(n \le 10^{10}\)个不是无平方因子数
二分答案 容斥一下0个质数的平方因子-1个..... 枚举\(\sqrt{mid}\)的平方因子乘上莫比乌斯函数最后求出无平方因子数的个数取补集
#include #include #include #include #include using namespace std;const int N3e55;typedef long long ll;inline ll read(){char cgetchar();ll x0,f1;while(c9){if(c-)f-1;cgetchar();}while(c>09){xx*10c-0;cgetchar();}return x*f;}ll k;int notp[N], p[N], mu[N];void sieve(int n) {mu[1] 1;for(int i2; i
本文共计316个文字,预计阅读时间需要2分钟。
题目要求求解第 \( n \) 个不是平方数的非零平方根的平方数 - 1 的平方根。
1. 首先求出第 \( n \) 个不是平方数的非零平方根的平方数,记为 \( m \)。
2.计算 \( m \) 的平方根,记为 \( \sqrt{m} \)。
3.最后输出 \( \sqrt{m} \)。
例如,当 \( n=1 \) 时,\( m=2^2=4 \),所以 \( \sqrt{m}=2 \)。
请注意,这个解法适用于 \( n \leq 10^{10} \) 的情况。
题意求第\(n\le10^{10}\)个不是无平方因子数二分答案容斥一下0个质数的平方因子-1个..枚举\(\sqrt{mid题意求第\(n \le 10^{10}\)个不是无平方因子数
二分答案 容斥一下0个质数的平方因子-1个..... 枚举\(\sqrt{mid}\)的平方因子乘上莫比乌斯函数最后求出无平方因子数的个数取补集
#include #include #include #include #include using namespace std;const int N3e55;typedef long long ll;inline ll read(){char cgetchar();ll x0,f1;while(c9){if(c-)f-1;cgetchar();}while(c>09){xx*10c-0;cgetchar();}return x*f;}ll k;int notp[N], p[N], mu[N];void sieve(int n) {mu[1] 1;for(int i2; i

