1.普通版

第一眼看到这个题,我脑海里就是,“我们是不是在哪里见过~”,去年大一刚学C语言的时候写过一个类似的题目,写了九重循环。。。。就像这样(在洛谷题解里看到一位兄台写的。。。。超长警告,慎重点开

  1. #include <stdio.h>
  2. #include <cstdlib>
  3. int main()
  4. {
  5. int i[];
  6. for (i[] = ; i[] <= ; i[]++)
  7. {
  8. for (i[] = ; i[] <= ; i[]++)
  9. {
  10. int p1=;
  11. if (i[] == i[]) p1 = ;
  12. if (p1 != ) {
  13. for (i[] = ; i[] <= ; i[]++)
  14. {
  15. int p2=;
  16. for (int j2 = ; j2 < ; j2++) if (i[] == i[j2]) p2 = ;
  17. if (p2 != ) {
  18. for (i[] = ; i[] <= ; i[]++)
  19. {
  20. int p3=;
  21. for (int j3 = ; j3 < ; j3++) if (i[] == i[j3]) p3 = ;
  22. if (p3 != ) {
  23. for (i[] = ; i[] <= ; i[]++)
  24. {
  25. int p4=;
  26. for (int j4 = ; j4 < ; j4++) if (i[] == i[j4]) p4 = ;
  27. if (p4 != ) {
  28. for (i[] = ; i[] <= ; i[]++)
  29. {
  30. int p5=;
  31. for (int j5 = ; j5 < ; j5++) if (i[] == i[j5]) p5 = ;
  32. if (p5 != ) {
  33. for (i[] = ; i[] <= ; i[]++)
  34. {
  35. int p6=;
  36. for (int j6 = ; j6 < ; j6++) if (i[] == i[j6]) p6 = ;
  37. if (p6 != ) {
  38. for (i[] = ; i[] <= ; i[]++)
  39. {
  40. int p7=;
  41. for (int j7 = ; j7 < ; j7++) if (i[] == i[j7]) p7 = ;
  42. if (p7 != ) {
  43. for (i[] = ; i[] <= ; i[]++)
  44. {
  45. int p8=;
  46. for (int j8 = ; j8 < ; j8++) if (i[] == i[j8]) p8 = ;
  47. if (p8 != ) {
  48. //printf("%d %d %d %d %d %d %d %d %d\n", i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8]);
  49. int a = * i[] + * i[] + i[];
  50. int b = * i[] + * i[] + i[];
  51. int c = * i[] + * i[] + i[];
  52. double d1 = double(a) / b;
  53. double d2 = double(c) / b;
  54. if (d1 == 0.5 && d2 == 1.5)
  55. {
  56. printf("%d %d %d\n", a, b, c);
  57. //system("pause");
  58. }
  59. }
  60. }
  61. }
  62. }
  63. }
  64. }
  65. }
  66. }
  67. }
  68. }
  69. }
  70. }
  71. }
  72. }
  73. }
  74. }
  75. }
  76. system("pause");
  77. return ;
  78. }

假设这三个数是 x : y : z  = 1 : 2 : 3,那么z最大可以为987,那么x最大到329(其实比329还要小几个数,因为数字重复了,懒得去抠了),那就好办了,x 从123循环到329,判重就完事了。

  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. int a[];
  5. //判重,且不能带0
  6. int IsRepeat(int x) {
  7. memset(a, , sizeof(int) * );
  8. while (x) {
  9. int t = ++a[x % ];
  10. if (t == || a[] == )
  11. return ;
  12. x /= ;
  13. }
  14. return ;
  15. }
  16. int IsRepeat2(int x,int y,int z) {
  17. memset(a, , sizeof(int) * );
  18. while (x) {
  19. a[x % ]++; a[y % ]++; a[z % ]++;
  20. if (a[] > ) return ;
  21. x /= ; y /= ; z /= ;
  22. }
  23. for (int i = ; i < ; i++)
  24. if (a[i] > ) return ;
  25. return ;
  26. }
  27. int main() {
  28. //x,y,z 1:2:3,z最大可以为987,那么1最大到329
  29. for (int x = ; x <= ; x++) {
  30. if (IsRepeat(x)) {
  31. continue;
  32. }
  33. //如果x不重复,y,z 也不会重复
  34. int y = x * ; int z = x * ;
  35. if (!IsRepeat2(x, y, z)) {
  36. cout << x << " " << y << " " << z << endl;
  37. }
  38. }
  39. return ;
  40. }

2.升级版

就是把原来的比例从1:2:3,变成了A:B:C。

思路还是差不多,中间continue判断,写的好像有点乱,但是确实不能少。

  1. #include <iostream>
  2. using namespace std;
  3. bool IsRepeat(int x) {
  4. int a[] = { };
  5. while (x) {
  6. int t = a[x % ]++;
  7. if (t == || a[] == )
  8. return true;
  9. x /= ;
  10. }
  11. return false;
  12. }
  13. bool IsRepeat3(int x, int y, int z) {
  14. int a[] = { };
  15. while (x) {
  16. a[x % ]++; a[y % ]++; a[z % ]++;
  17. if (a[] > ) return true;
  18. x /= ; y /= ; z /= ;
  19. }
  20. for (int i = ; i < ; i++)
  21. if (a[i] > ) return true;
  22. return false;
  23. }
  24. int main() {
  25. int A, B, C, flag = ;
  26. cin >> A >> B >> C;
  27. for (int i = ; i < ; i++) {
  28. int j, k;
  29. if (IsRepeat(i))continue;
  30.  
  31. if (i * B % A == ) j = i * B / A;
  32. else continue;
  33.  
  34. if (j > )continue;
  35.  
  36. if (j*C%B == ) {
  37. k = j * C / B;
  38. if (k > || IsRepeat3(i, j, k))continue;
  39. flag = ;
  40. cout << i << " " << j << " " << k << endl;
  41. }
  42. }
  43. if (!flag)cout << "No!!!" << endl;
  44. return ;
  45. }

随手练——洛谷-P1008 / P1618 三连击(暴力搜索)的更多相关文章

  1. 随手练——洛谷-P1151(枚举与暴力搜索)

    枚举 #include <iostream> using namespace std; int main() { ; cin >> k; ; i < ; i++) { ) ...

  2. 随手练——洛谷-P1002 过河卒(动态规划入门)

    题目链接:https://www.luogu.org/problemnew/show/P1002 题目还算良心,提醒了结果可能很大,确实爆了int范围, 这是一开始写的版本,用递归做的,先给地图做标记 ...

  3. 随手练—— 洛谷-P2945 Sand Castle(贪心)

    题目链接:https://www.luogu.org/problemnew/show/P2945 (原题 USACO) 要求钱最少,就是试着让M和B的离散程度最小(我自己脑补的,就是总体更接近,我不知 ...

  4. 洛谷 p1008三连击

    洛谷 p1008三连击 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将1,2, ⋯,9共99个数分成3组,分别组成3个三位数, ...

  5. 【题解】洛谷P1120 小木棍(搜索+剪枝+卡常)

    洛谷P1120:https://www.luogu.org/problemnew/show/P1120 思路 明显是搜索题嘛 但是这数据增强不是一星半点呐 我们需要N多的剪枝 PS:需要先删去超出50 ...

  6. 【题解】洛谷P1731 [NOI1999] 生日蛋糕(搜索+剪枝)

    洛谷P1731:https://www.luogu.org/problemnew/show/P1731 思路 三重剪枝 当前表面积+下一层表面积如果超过最优值就退出 当前体积+下一层体积如果超过总体积 ...

  7. 和小哥哥一起刷洛谷(5) 图论之深度优先搜索DFS

    关于dfs dfs伪代码: void dfs(s){ for(int i=0;i<s的出度;i++){ if(used[i]为真) continue; used[i]=1; dfs(i); } ...

  8. 和小哥哥一起刷洛谷(4) 图论之广度优先搜索BFS

    关于bfs: 你怎么会连这个都不知道!!!自己好好谷歌一下!!!(其实我也刚学) bfs伪代码: while(队列非空){ 取出队首元素u; 弹出队首元素; u染色为黑色; for(int i=0;i ...

  9. 洛谷p1008 三连击

    https://www.luogu.org/problemnew/show/P1008 题目描述 将1,2,3,4,5,6,7,8,9共9个数分成3组,分别组成3个三位数,且使这3个三位数的值构成1: ...

随机推荐

  1. Odata简介和Demo

    转:http://www.cnblogs.com/shanyou/archive/2013/06/11/3131583.html 在SOA的世界中,最重要的一个概念就是契约(contract).在云计 ...

  2. 设置placeholder的字体颜色

    //设置字体颜色 [self.searchTextField setValue:[UIColor colorWithRed:0.50 green:0.50 blue:0.50 alpha:1.0] f ...

  3. javascript 理解继承

    一.继承-通过原型实现继承 function Father() { this.FatherSkin = "yellow"; }; Father.prototype.getFathe ...

  4. C/C++遍历进程和进程ID的小工具

    原文:http://blog.csdn.net/qq78442761/article/details/54646010 当我们写某些具有破坏性的程序时就需要对进程进行遍历和提取ID 对于上述功能,我们 ...

  5. 131.005 Unsupervised Learning - Cluster | 非监督学习 - 聚类

    @(131 - Machine Learning | 机器学习) 零. Goal How Unsupervised Learning fills in that model gap from the ...

  6. 浅谈搜索引擎SEO(HTML/CSS)

    SEO:搜索引擎优化(免费): SEM:搜索引擎营销(付费). 它们两者的区别是: 1.SEM高投入,SEO低投入: 2.SEM短.效益块,SEO长期投入.增长慢: 3.新广告法颁布之后SEM广告位减 ...

  7. springDataJpa学习笔记

    目录 前言 springData 准备 引用 xml配置初始化JPA pojo dao层接口 使用 新增.修改:save 删除 查询所有 根据ID查询findById 命名规则查询(条件查询) 自定义 ...

  8. Eclipse导出可运行的jar包并运行

    https://blog.csdn.net/kpchen_0508/article/details/49275407 程序运行的第二种方式:

  9. Exchange Server 2016 管理邮箱收发限制

    备注:本文是Exchange Server 2016管理系列的配套课件,更加详细的讲解请参考视频课程,文章结尾有视频课程主页的链接. 进行收发邮件大小的限制是很有必要的,因为邮件服务器不能当作文件服务 ...

  10. python 实现插入排序、冒泡排序、归并排序

    def InsertSort(A): '''插入排序算法:传入一个list,对list中的数字进行排序''' print('插入排序前list元素顺序:',A) length=len(A) for i ...