B - Divples Gym - 102302B(试除法求因数)

After your death, you’re sent to a mysterious room. There are two guardian cats and two doors, one goes to heaven of AC problems and another goes to hell NO. One cat likes all divisors of an integer a and the other cat likes all multiples of an integer b. You where asked to write all integers that satisfies both. If you answer correctly, you may go to heaven of AC problems, full of balloons, otherwise you’re sent to hell NO.

Input
The input consists of two integers a and b, where 1 ≤ b ≤ a ≤ 1012.

Output
The output consists of one line with all integers from smallest to largest that satisfies both guardian cats.

Examples
Input
12 3
Output
3 6 12
Input
10 3
Output
Input
128 2
Output
2 4 8 16 32 64 128

题意: 求a的因数中是b倍数的数
思路: 试除法求出a的因数,复杂度√n,存入set中去重,然后for就好了。

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
const ll maxn = 1e12 + 7;
vector<ll>ans;
set<ll>res;

int main()
{
    ll a,b;
    scanf("%lld%lld",&a,&b);
    
    ll tmp = sqrt(a) + 1;
    for(int i = 1;i <= tmp;i++)
    {
        if(a % i == 0)
        {
            res.insert(a / i);
            res.insert(i);
        }
    }
    
    set<ll>::iterator it;
    for(it = res.begin();it != res.end();it++)
    {
        ll tmp = *it;
        if(tmp % b == 0)
        {
            printf("%lld ",tmp);
        }
    }
    return 0;
}

你可能感兴趣的:(#,gym)