zoukankan      html  css  js  c++  java
  • SRM 567 div2

    250pt....

    500pt

      题意:给n和m,a,b满足(1 <= a <= n, 1 <= b <= m),SSR(a, b) = (sqrt(a) + sqrt(b))^2为整数,其实就是sqrt(a*b)为整数。

    总体思路是:从1...n枚举a,看m中有多少个和a组合可以构成平方数的。

    先把a因式分解,a = k1p1*k2p2*...*kxpx 找到所有pi (1 <= i <= x)中是奇数的质因子,因为幂为偶数的质因子开放的结果一定是整数,所以不用考虑偶数的情况。剩下这些设幂为奇数的质因子的积为W,比如a = 2^3*5^3*7^2, W = 2^3*5^3;要使sqrt(a*b)为整数,则a*b要试W变成W*W,也就是b中也要贡献若干个W(在保证不大于m的情况下),贡献多少个呢?W,4*W,16*W都可以,也就是说W的倍数必须要是平方数,a*b = (a里面幂为偶数的质因子)*W*W*x x为平方数。

    class TheSquareRootDilemma {
    public:
        int countPairs(int N, int M) {
            int t, i, j, ans = 0;
            for(i = 1; i <= N; ++i) {
                t = i;
                for(j = 2; j*j <= t; ++j) {
                    while(t%(j*j) == 0) t /= (j*j);
                }
                for(j = 1; ; ++j) {
                    if(t*j*j > M)   {ans += j - 1; break;}
                }
            }
            return ans;
        }
    };
  • 相关阅读:
    前端基础之CSS
    前端基础之HTML(三)
    前端基础之HTML(二)
    前端基础之HTML(一)
    面向对象总结
    内置函数总结
    函数部分总结
    文件操作总结
    基础数据类型总结
    python基础知识总结
  • 原文地址:https://www.cnblogs.com/vongang/p/2870858.html
Copyright © 2011-2022 走看看