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); } }