idea
题意为对于正整数n分解为k个p次方的形式,若无,则输出impossible;若有,则输出底数和最大的方案,还有多种方案时则输出字典序最大(数值最大)的方案。
首先预处理所有p次方不大于n的值;
再用深搜枚举选择(可多次)或不选择当前底数的方案,当当前选择的底数个数nowK大于k或当前所选数的p次方nowSum大于n时停止,当nowK==k且nowSum= =n时找到一种方案,判断是否需要更新已有方案
solution
#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
int n, k, p, sum = 0;
vector<int> fac, ans, temp;
void dfs(int i