题目描述
小爱正在学习完全平方数的知识,他知道若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。
但好学的他发现有些完全平方数也能写成其他两个数字的乘积,例如:16=42=2×816=42=2×8,1616既可以写成 44 的平方,也可以写成 2×82×8 ,他把例如 (2,8)(2,8) 这样乘积是完全平方数的数对,称为 完全平方数对,当然 (4,4)(4,4) 本身也是完全平方数对。
现给定一个正整数 𝑛n,请你求出在数对中数字均不超过 𝑛n 的情况下,有多少对完全平方数对?
输入格式
输入一个正整数,表示 𝑛n。
输出格式
输出满足条件的数对个数。
数据范围
- 对于30%30%的数据:1≤𝑛≤501≤n≤50
- 对于60%60%的数据:1≤𝑛≤1041≤n≤104
- 对于100%100%的数据:1≤𝑛≤1051≤n≤105
样例数据
输入:
5
输出:
7
说明:
(1,1),(1,4),(2,2),(3,3),(4,1),(4,4),(5,5)共7对。
详见代码:
#include <bits/stdc++.h>
using namespace std;
int ans = 0;
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++)
{
int x = sqrt(i);
int t = i;
for(int j = x; j >= 2; j--)
{
if (t % (j * j) == 0)
{
t /= j * j;
}
}
ans += sqrt(n / t);
}
cout << ans;
return 0;
}