作计数题解报告

做计数

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

一种简单的思维

一看到根号就马上想到平方。然后这题就出来了。
把左右平方。

也就是
已知都为正整数
所以为正整数
那么为正整数
所以是一个正整数,也就是为一个平方数,是他的因数
我们知道所以
然后暴力枚举就行了
有一点需要十分十分十分注意,本蒟蒻被弄了好几次
这个重复,交换也算的,所以就是纯碎的因数个数
贴上蒟蒻代码:

#include<bits/stdc++.h>
using namespace std;

int n,ans;

int main(){
    scanf("%d",&n);
    for(int i=1;i<=sqrt(n);++i){
        int k=i*i;
        for(int j=1;j<=sqrt(k);++j){
            if(j==i) ans+=1;
            else if(k%j==0) ans+=2;
        }
    } 
    printf("%d",ans);
}
全部评论
这里应该是 i * j 是完全平方数 , 因为根号(i * j)得是正整数 , 不是等于k方吧 , 等于k方的话等式不成立了,作者看下?
2 回复
分享
发布于 2020-02-06 20:02
为啥i*j=k^2啊
1 回复
分享
发布于 2020-02-06 19:58
联易融
校招火热招聘中
官网直投

相关推荐

26 收藏 评论
分享
牛客网
牛客企业服务