hiho 한 번 여덟째 주 Coordinates (구약수)

3709 단어
@(E ACMer)
제목: 두 수의 약수를 순서대로 맞추어 주십시오.분석: 약수의 O(n‾√) 방법을 구하면 된다.
code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <map>
#include <stack>
#include <vector>
#include <string>
#include <queue>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
typedef pair<int, int> pii;
typedef long long ull;
typedef long long ll;
typedef vector<int> vi;
#define xx first
#define yy second
#define rep(i, a, n) for (int i = a; i < n; i++)
#define sa(n) scanf("%d", &(n))
#define vep(c) for(decltype((c).begin()) it = (c).begin(); it != (c).end(); it++)
const int mod = int(1e9) + 7, INF = 0x3fffffff, maxn = 1e6 + 12;
set<int> a, b;

set<int> getdivisors(int x)
{
    set<int> ret;
    for (int i = 1; i * i <= x; i++) {
        if (x % i == 0)
            ret.insert(i), ret.insert(x / i);
    }
    return ret;
}

int main(void)
{
    int n, m;
    cin >> n >> m;
    a = getdivisors(n), b = getdivisors(m);
    vi st, ed;
    vep (a) st.push_back(*it);
    vep (b) ed.push_back(*it);
    vep (st) {
        rep (i, 0, ed.size()) {
            cout << *it << " " << ed[i] << endl;
        }
    }
    return 0;
}

좋은 웹페이지 즐겨찾기