いろいろがんばりたいブログ

情報科学科の人がいろいろ書きます。

Topcoder SRM 567 TheSquareRootDilemma

本番のときは、かんがえていた方法がそもそも間違っていた。
A = i*i*k,B=i*i*jを考えればよかった。
重複がこわいので、Setにつっこむ。

class TheSquareRootDilemma {
    public:
        int countPairs(int Ns, int Ms) {
            set<pair<int,int> > S;

            for(int i=1;i<=max(Ns,Ms);i++){
                for(int j=1;i*j*j <= Ns;j++){
                    for(int k=1;i*k*k <= Ms;k++){
                        S.insert(mp(i*j*j,i*k*k));
                    }
                }
            }
            return S.size();
        }
}