首页 > 学院 > 开发设计 > 正文

1103. Integer Factorization (30) PAT 甲级

2019-11-08 01:16:21
字体:
来源:转载
供稿:网友

传送门

#include<stdio.h>#include<vector>#include<algorithm>#include<math.h>#include<stdlib.h>using namespace std;vector<int> v,fac,ans;int n,k,p;int maxfacnum=-1;void init(){ int i=0; int temp=0; while(temp<=n){ v.push_back(temp); temp=pow(++i,p); }}void DFS(int index,int nowK,int sum,int facSum){ if(nowK==k&&sum==n){ if(facSum>maxfacnum){ ans=fac; maxfacnum=facSum; } return ; } if(sum>n||nowK>k) return ; if(index>=1){ fac.push_back(index); DFS(index,nowK+1,sum+v[index],facSum+index); fac.pop_back(); DFS(index-1,nowK,sum,facSum); }}int main(){ scanf("%d%d%d",&n,&k,&p); init(); DFS(v.size()-1,0,0,0); if(maxfacnum==-1){ PRintf("Impossible"); } else{ printf("%d = %d^%d",n,ans[0],p); for(int i=1;i<ans.size();i++){ printf(" + %d^%d",ans[i],p); } }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表