本题重在理解分析,抽解含义
将题中等式两边平方后进行观察发现
通俗来看其意义就是
i*j为小于等于n的正整数
同时i*j开方也为正整数
只需要求出符合条件的i,j组合个数就行了
理解到这一点我们也就可以开始解题了
代码如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<math.h>
using namespace std;
int n,k,ans=0;
int main()
{
cin>>n;
for(int i=1;i<=sqrt(n);i++)
{
k=i*i;//k就是符合第一个和第二个条件的数,只需求出k的因数个数即可
for(int j=1;j<=i;j++)
{
if(i==j)
ans+=1;
else if(k%j==0)
ans+=2;
}
}
cout<<ans;
return 0;
}