(牛客第二场) E.做计数(数学)

做计数

http://www.nowcoder.com/questionTerminal/899326075e534e0a88ca5a4451ba0298

(牛客第二场) E.做计数(数学)

链接

求有多少不同的正整数三元组,满足,且

两边平方得:

由于都为正整数,显然也为正整数,为完全平方数。

我们可以枚举所有的,使其乘积为完全平方数即可。

#include <cstdio>
#include <cmath>
using namespace std;
int main(){
    int n;
    scanf("%d",&n);
    int ans=0;
    for(int i=1;i<=sqrt(n);i++){  //枚举n以内的完全平方数
        int k=i*i;       
        for(int j=1;j<=i;j++){  
            if(i==j) ans++;      //如果i==j,且 i*j =i*i ,只要加一就好了
            else if(k%j==0) ans+=2;  //否则如果k能够被j 整除,由于排除掉两个因子相等的情况,两个因子调换就是两种情况,答案加2
        }
    }
    printf("%d\n",ans);
    return 0;
}
全部评论

相关推荐

昨天 18:09
门头沟学院 Java
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-29 20:12
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务