#include<iostream>
#include<vector>
#include<cmath>using namespace std;vector<int> v,vans,vtmp;
int max_fsum = -1;
int N,M,K;void dfs(int idx,int cnt,int sum,int facsum){if(cnt == M && sum == N){if(facsum > max_fsum){max_fsum = facsum;vans = vtmp;}return;}if(cnt > M || sum > N) return;if(idx >= 1){vtmp.push_back(idx);dfs(idx,cnt + 1,sum + v[idx],facsum + idx);vtmp.pop_back();dfs(idx - 1,cnt,sum,facsum);}
}int main(){scanf("%d %d %d",&N,&M,&K);int tmp = 0;for(int i = 1;tmp <= N;i ++){v.push_back(tmp);tmp = pow(i,K);} dfs(v.size() - 1,0,0,0);if(max_fsum == -1){printf("Impossible");return 0;} printf("%d = ",N);for(int i = 0;i < vans.size();i ++){printf("%d^%d",vans[i],K);if(i < vans.size() - 1) printf(" + ");}return 0;
}
本文发布于:2024-02-01 05:39:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170673714234290.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |