試し割りの素因数分解はlong longを使うと4倍以上遅い。intにせよ

// 計算量O(√N)
// なのでN=10^18だと間に合いません

// long long -> intとすると4倍(?)速くなります
// N=10^4, A=10^9の時は必要でしょう

// 素因数分解
// その素因数が何個あるかのmapを返す
map<ll, ll> factorize(ll n){
    map<ll, ll> mp;
    ll sq = sqrt(n);
    FOR(i, 2, sq+1){
        while(n%i==0){
            mp[i]++;
            n/=i;
        }
    }
    // 残り
    if(n!=1){
        mp[n]++;
    }
    return mp;
}