这个题目当时没有提交,现在想了想当时的思路。感觉我这样做是可以出结果的。
题意:
给你两个数n,m;
让你求这小于等于这两个数的平方根的和的平方是一个整数的个数,实际上就是求满足1<=x<=n,1<=y<=m.(x,y)的个数。
我的做法:
对于x从1到n遍历:
x=xx*xx*numx;//x的值可以分为一个xx的平方数乘以numx。
y=yy*yy*numx;//x的值可以分为一个y的平方数乘以numx。
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <fstream>
#include <map>
#include <set>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
class TheSquareRootDilemma
{
public:
int countPairs(int N, int M)
{
int i,j;
int x,y;
cin>>N>>M;
x=M>N?M:N;
y=M>N?N:M;
int sum=0;
for(i=1;i<=y;i++)
{
int num=sqrt(i);
for(j=num;j>=1;j--)
{
if(i%(j*j)==0)
{
break;
}
}
num=i/j/j;
int numx=x;
numx=numx/num;
sum+=sqrt(numx);
}
return sum;
}
};