PAT A1103
PAT A1103
标签(空格分隔): PAT
解题思路: DFS
#include <cstdio>
#include <vector>
using namespace std;
int n, k, p;
int maxFacSum = -1;         //记录最大因子和
vector<int> ans, temp, fac;
int power(int x) {
    int ans = 1;
    for(int i = 0; i < p; i++) {
        ans *= x;
    }
    return ans;
}
void init() {
    int i = 0, temp = 0;    //初始化fac,把因子的平方存入其中
    while(temp <= n) {
        fac.push_back(temp);
        temp = power(++i);
    }
}
void DFS(int index, int nowK, int sum, int facSum) {
    if(nowK == k && sum == n) {        //dfs终止条件
        if(facSum > maxFacSum) {      //目前的因子和大于最大因子和
            maxFacSum = facSum;
            ans = temp;               //更新答案vector
        }
        return;
    }
    if(nowK > k || sum > n) return;     //此时不可能满足条件,直接返回
    if(index - 1 >= 0) {
        temp.push_back(index);
        DFS(index, nowK + 1, sum + fac[index], facSum + index);    //选择index
        temp.pop_back();
        DFS(index - 1, nowK, sum, facSum);    //不选index
    }
}
int main() {
    scanf("%d%d%d", &n, &k, &p);
    init();
    DFS(fac.size() - 1, 0, 0, 0);
    if(maxFacSum == -1) printf("Impossible\n");
    else {
        printf("%d = %d^%d", n, ans[0], p);
        for(int i = 1; i < ans.size(); i++) {
            printf((" + %d^%d"), ans[i], p);
        }
    }
    return 0;
}
PAT A1103的更多相关文章
- PAT A1103 Integer Factorization (30 分)——dfs,递归
		The K−P factorization of a positive integer N is to write N as the sum of the P-th power of K positi ... 
- PAT A1103 Integer Factorization
		线性dfs,注意每次深搜完状态的维护~ #include<bits/stdc++.h> using namespace std; ; vector<int> v,tmp,pat ... 
- PAT A1103—DFS
		Integer Factorization The K−P factorization of a positive integer N is to write N as the sum of the ... 
- PAT_A1103#Integer Factorization
		Source: PAT A1103 Integer Factorization (30 分) Description: The K−P factorization of a positive inte ... 
- PAT甲级——A1103 Integer Factorization
		The K−P factorization of a positive integer N is to write N as the sum of the P-th power of Kpositiv ... 
- PAT甲级题解分类byZlc
		专题一 字符串处理 A1001 Format(20) #include<cstdio> int main () { ]; int a,b,sum; scanf ("%d %d& ... 
- 《转载》PAT 习题
		博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ... 
- PAT Judge
		原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ... 
- PAT/字符串处理习题集(二)
		B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ... 
随机推荐
- python-request-各方法使用及格式
			Request库方法介绍 方法 说明 requests.request() 构造一个请求,支撑一下各方法的基础方法 requests.get() 获取HTML网页的主要方法,对应于HTTP的GET ... 
- contenOs7编码问题
- leecode第二百三十七题(删除链表中的节点)
			/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ... 
- leecode第二百三十一题(2的幂)
			class Solution { public: bool isPowerOfTwo(int n) { bool is_flag=false; ) { ==)//如果为1,看是不是第一个1 { if( ... 
- pycharm运行Django项目,提示UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6
			确认pycharm编码都是utf-8的情况下,需要修改项目中settings.py 'DIRS': [ ],默认是空,将路径加入即可解决. TEMPLATES = [ { 'BACKEND': 'dj ... 
- XV Open Cup named after E.V. Pankratiev. GP of Central Europe (AMPPZ-2014)--B.Petrol
			多源最短路+并查集 #include <bits/stdc++.h> using namespace std; #define rep(i, j, k) for (int i = int( ... 
- 移动端遇到的问题小结--video
			本篇主要是针对Android系统,所遇到的问题. 1. video的全屏处理: 这里说的全屏是指针对浏览器的全屏,而不是整个手机的全屏.要想全屏效果只需对video标签加 webkit-plays ... 
- 在java程序代码中打开文件
			class TEST { public static void main(String[] args){ System.out.println("He ... 
- Goroutine通信与thread in java间的通信
			// This file contains the implementation of Go channels. // Invariants: // At least one of c.sendq ... 
- javascript高级程序设计第3版——第7章 函数表达式
			此张内容的难点在于闭包.而闭包又涉及到原型,原型链,执行上下环境,this的取值等知识点.(此章节对于闭包的内容篇幅较少,且写的很是艰涩难懂,推荐一位大牛的博客,对于闭包的前因后果以及作用机制写的很明 ... 
