(牛客第二场) 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; }