CF1619B Squares and Cubes
题目大意
求 以内有多少个完全平方数或完全立方数。
。
解题思路
考虑容斥。
以内是完全平方数或完全立方数的数的个数 以内是完全平方数的数的个数 以内是完全立方数的数的个数 以内是完全平方数且是完全立方数的数的个数。
显然, 以内是完全平方数的数的个数 , 以内是完全立方数的数的个数 。
再看 以内是完全平方数且是完全立方数的数的个数,考虑找性质。
发现,将 唯一分解为 ,其中 为质数且互不相等。
当 时, 为完全平方数。
当 时, 为完全立方数。
那么当 是完全平方数且是完全立方数时,肯定满足:,那么发现什么, 是完全六次方数。
那么 以内是完全平方数且是完全立方数的数的个数,就转换成 以内是完全六次方数的数的个数,也就是 。
那就结束了,答案为 。
转换为 ,用 pow
函数算即可。
注意精度问题。
CODE
#include <bits/stdc++.h>
using namespace std;
signed main()
{
int T;
cin >> T;
while (T --)
{
double n;
cin >> n;
n += (0.00001);
cout << int(pow(n, 1.0 / 2)) + int(pow(n, 1.0 / 3)) - int(pow(n, 1.0 / 6)) << endl;
}
return 0;
}
本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/18122060