1. 程式人生 > 實用技巧 >EOJ Monthly 2020.7 Sponsored by TuSimple E.因數串 數學/ 構造

EOJ Monthly 2020.7 Sponsored by TuSimple E.因數串 數學/ 構造

給定一個n表示a的質因數個數。

接下來n行給出質數及其指數。

按要求輸出其因數,滿足如下要求: 當前數是前一個數通過乘一個質數或者除以一個質數得到。

反正就是構造嘛。對於每一個i,必然要遍歷前面的所有情況。其實就是升升降降。

vector<ll> ans;
vector<ll> p(16);
vector<ll> e(16);

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%lld %lld", &p[i], &e[i]);
    }
    ans.pb(
1); ll tmp = 1; for (int i = 0; i < e[0]; i++) { tmp *= p[0]; ans.pb(tmp); } for (int i = 1; i < n; i++) { int len = ans.size(); for (int j = 0; j < e[i]; j++) { int k = ans.size(); for (int _ = 0; _ < len; _++) { ans.pb(ans[k
- _ - 1] * p[i]); } } } for (auto& k : ans) { printf("%lld\n", k); } }