B - Divples
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
#include <iostream>
#include <cstring>
#include <cstdio>
#include <math.h>
#include <vector>
#include <set>
using namespace std;
typedef long long ll;
const ll maxn = 1e12 + 7;
vector<ll>ans;
set<ll>res;
int main()
{
ll i, a, b;
scanf("%lld %lld",&a, &b);
ll tmp = sqrt(a) + 1;
for(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;
}