正解应该是dfs剪纸。

但是,第一题这样做说实话接受不了。这题可以通过暴力来做,不过有技巧。

思路:在给定的K位数中找到符合的存入数组,排序后输出。

怎么找?若k=10,100000000~9999999999…找未免不现实。
压缩一下。
10位数里面,各位数和==m一定有个最大值和最小值,不在这个范围之内的数不用考虑。

int ismin(int a,int b){ //找最小值int ans=0,cnt=0;while(b>9){ans=ans*10+9;cnt++;b-=9;}if(b>1) ans=(b-1)*pow(10,cnt)+ans;ans=pow(10,a-1)+ans;return ans;
}
int isbig(int a,int b){  //找最大值。int ans=0;while(b>9){ans=ans*10+9;b-=9;a--;}if(b) {a--;ans=ans*10+b;}while(a--){ans*=10;}return ans;
}

然后就可以暴力做了。

#include<bits/stdc++.h>
using namespace std;
int kk,m;
struct node{int val,nn;
};
bool cmp(node a,node b){return a.nn!=b.nn?a.nn<b.nn:a.val<b.val;
}
int gcd(int a,int b){return b==0?a:gcd(b,a%b);
}
int isp(int num){if(num<2) return 0;for(int i=2;i*i<=num;i++){if(num%i==0) return 0;}return 1;}
int get_tol(int num){int ans=0;while(num){ans+=num%10;num/=10;}return ans;
}
int ismin(int a,int b){int ans=0,cnt=0;while(b>9){ans=ans*10+9;cnt++;b-=9;}if(b>1) ans=(b-1)*pow(10,cnt)+ans;ans=pow(10,a-1)+ans;return ans;
}
int isbig(int a,int b){int ans=0;while(b>9){ans=ans*10+9;b-=9;a--;}if(b) {a--;ans=ans*10+b;}while(a--){ans*=10;}return ans;
}
int isd(int num){int now=get_tol(num);if(now!=m){return 0;}else{int cur=get_tol(num+1);int gc=gcd(cur,now);if(gc>2&& isp(gc)){kk=cur;return 1;}return 0;}
}
int n;
int main(){cin>>n;for(int i=1;i<=n;i++){int k;cin>>k>>m;vector<node> v;printf("Case %d\n",i);if(9*k<m){printf("No Solution\n");continue;}int tar=isbig(k,m);int be=ismin(k,m);  for(int j=be;j<=tar;j++){if(isd(j)){v.push_back({j,kk});}}if(!v.size()){printf("No Solution\n");}else{sort(v.begin(),v.end(),cmp);for(auto j:v){printf("%d %d\n",j.nn,j.val);}}}return 0;
}

聪明点的还可以优化下。
每次循环+9,不是+1.

1160 Forever (20 分)相关推荐

  1. 19年秋季第一题 PAT甲级 1161 Forever (20 分) 有点儿意思

    如果喜欢我的文章请点赞让我知道噢 题目 7-1 Forever (20 分) "Forever number" is a positive integer A with K dig ...

  2. 7-1 Forever (20分)

    这个题是我想复杂了,一时半会没明白,导致只能拿半分. 最开始我用dfs,写出来堆栈溢出,于是便放弃了原来的思路,转而找规律,未果,,,, 后来发现还是dfs+剪枝 给力,我之前一直不注重剪枝的作用,只 ...

  3. PATA 1065 A+B and C (64bit) (20分)

    PATA 1065 A+B and C (64bit) (20分) 题目描述:Given three integers A, B and C in [−2^​63, 2^​63], you are s ...

  4. 7-1 查找书籍(20 分)(程序设计天梯赛模拟练习题)

    7-1 查找书籍(20 分) 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价. 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息.每本书 ...

  5. PTA—输出全排列 (20分) 递归回溯思想

    PTA-输出全排列 (20分) 递归回溯思想 题目要求: 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出 ...

  6. 2、求100以内的素数之和。(20分)

    题目: /* 2.求100以内的素数之和.(20分) */ 代码: public class Two207 {public static void main(String[] args) {int s ...

  7. 1、输入四个整数,按照从小到大顺序输出。(20分)

    题目: /* 1.输入四个整数,按照从小到大顺序输出.(20分) */ 代码: 注:题目说的是四个数的排序,我就直接写了个冒泡排序 public class One207 {public static ...

  8. /* * 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“

    题目: 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 *****************    所谓" ...

  9. /* * 编程题第四题(20分): 用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案。 */

    题目: /* 编程题第四题(20分): 用1元5角钱人名币兑换5分.2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案. */ 我使用java做的 public class ...

最新文章

  1. MPB:南农韦中组-根际细菌便利和竞争互作类型和强度的研究方法
  2. 兼容ie9以下css3,hover和圆角(htc)
  3. 编辑从字节码和 JVM 的角度解析 Java 核心类 String 的不可变特性
  4. 吴恩达 coursera ML 第十课总结+作业答案
  5. 《代码大全2》读书笔记(七)
  6. Oracle中压缩数据节省空间和提高速度
  7. 程序员过关斩将--从未停止过的系统架构设计步伐
  8. python numpy ndarray之basic operations
  9. Java中的抽象类和接口(interface),abstract关键字的用法
  10. android 碎片问题,Android碎片问题
  11. MySql-流程函数
  12. 南昌有什么软件测试专业的学校,南昌哪家软件测试培训班比较靠谱
  13. 自适应滤波器 | 频域自适应滤波器(FLMS)
  14. netty源码阅读之编码之flush刷新buffer队列
  15. x星球出入站(蓝桥杯递归)
  16. 英语发音之音标4---长元音法()
  17. java之自动化观看视频
  18. 【机器学习实战】第3章 决策树(DecisionTree)
  19. Java接口 和 接口
  20. 基于Android平台的数码爱好者交流论坛社区

热门文章

  1. Java是世界上最好的语言?会是未来第一编程语言吗?
  2. python打印报错信息_python打印当前文件错误行的简单示例
  3. setTimeout() 和 setInterval 定时器的使用(带例题)
  4. 2022年中科大细胞生物学实验原理往年题复习参考
  5. kotlin中EditText赋值Type mismatch
  6. Broadcast广播的分类
  7. CB官方推荐AP英语文学与写作必读书目,2023报名中
  8. 【华唯鑫能油】矿物油、合成油的相关常识
  9. centos7 阿帕奇的安装与使用
  10. IED异常--Intellij idea解决出现this file is indented with tabs instead of 4 spaces 的提示