第四届蓝桥杯省赛C++B/C组----带分数

思路:

1.先枚举全排列

2.枚举位数

3.判断是否满足要求

这道题也就是n=a+b/c,求出符合要求的abc的方案数。进行优化时,可以对等式进行改写,改写成:b=cn-ca。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. const int N = 30;
  7. int target,ans = 0;
  8. bool had_use[N],ever[N];
  9. bool check(int a, int c)
  10. {
  11. int b = c*target - c*a; //写出式子,算出b
  12. if (!a || !b || !c) return false;
  13. memcpy(ever, had_use, sizeof had_use); //拷贝had_use数组给ever,这样能不改变原来的数组
  14. while (b)
  15. {
  16. int t = b % 10;
  17. if (!t || ever[t]) return false;
  18. ever[t] = true;
  19. b /= 10;
  20. }
  21. for (int i = 1; i <= 9; i++)//判断1-9每个数字有没有都被用到
  22. if (!ever[i]) return false;
  23. return true;
  24. }
  25. void dfs_c(int x, int a, int c)//x表示用了多少个数字,a表示枚举的a的大小,c表示c的大小
  26. {
  27. if (x >= 10) return;//如果1-9全部都已经被枚举了,则退出
  28. if (check(a,c)) ans++; //检验a和c是否满足要求,满足则方案书+1
  29. for (int i = 1; i <= 9; i++)
  30. {
  31. if (!had_use[i])
  32. {
  33. had_use[i] = true;
  34. dfs_c(x+1, a, c*10+i);
  35. had_use[i] = false;
  36. }
  37. }
  38. }
  39. void dfs_a(int u, int a)//u表示枚举到第几个位置,也就是用了多少个数字,t表示当前的a是多少
  40. {
  41. if (a >= target) return;
  42. if (a) dfs_c(u, a, 0); //如果a满足要求,则对c进行枚举
  43. for (int i = 1; i <= 9; i++)
  44. {
  45. if (!had_use[i])
  46. {
  47. had_use[i] = true;
  48. dfs_a(u+1, a * 10 + i);//将i加在a的各位
  49. had_use[i] = false; //回溯,恢复现场
  50. }
  51. }
  52. }
  53. int main()
  54. {
  55. scanf("%d", &target);
  56. dfs_a(0,0); //先枚举a
  57. printf("%d", ans);
  58. return 0;
  59. }

带分数--第四届蓝桥杯省赛C++B/C组的更多相关文章

  1. 2013年第四届蓝桥杯省赛试题(JavaA组)

    1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分6分)4.结果填空 (满分13分)5.代码填空 (满分5分)6.代码填空 (满分10分)7.程序设计(满分4分)8.程序设计(满 ...

  2. 2013年第四届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分12分)2.结果填空 (满分15分)3.结果填空 (满分10分)4.程序设计(满分16分)5.程序设计(满分20分)6.程序设计(满分27分) 1.标题:填算式 请看下面的算式: ...

  3. 2019年第十届蓝桥杯省赛总结(JavaA组)

    //update3.28:省一rank4,莫名进了国赛好神奇.. 记yzm10第一次体验A组(纯粹瞎水). 早闻山东的JavaA组神仙打架,进国赛都成了奢望(往年只有五个名额),因此抱着做分母的心态来 ...

  4. 2019年第十届蓝桥杯国赛总结(JavaA组)

    JavaA组国二,可以报销了~ JA死亡之组可不是盖的,rank12的排名还是拿不到国一啊(只有五个.. 出成绩的一刻波澜不惊,毕竟去年有国一了不慌哈哈哈 不过对我来说这个结果还算意料之外吧,毕竟大三 ...

  5. 2015年第六届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分15分)2.结果填空 (满分35分)3.代码填空 (满分31分)4.程序设计(满分41分)5.程序设计(满分75分)6.程序设计(满分103分) 1.标题:胡同门牌号 小明家住在一 ...

  6. 2013年第四届蓝桥杯国赛 九宫重排(HashMap+双BFS优化)

    九宫重排     时间限制:1.0s   内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干 ...

  7. 第四届蓝桥杯省赛 (JavaB组)

    第二题:马虎的算式 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了. 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案 ...

  8. 2013年第四届蓝桥杯C/C++程序设计本科B组省赛 第39级台阶

    题目描述: 第39级台阶 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶 ...

  9. 2013年第四届蓝桥杯C/C++程序设计本科B组省赛 马虎的算式

    题目描述 马虎的算式 小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了. 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答 ...

随机推荐

  1. CentOS6.5安装CM5.13

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6610650059971232269/ 安装好虚拟机(2个节点) YUM源已安装好.系统版本CentOS6.5.ja ...

  2. Maven+ajax+SSM实现编辑修改

    转载自:https://www.cnblogs.com/kebibuluan/p/9017754.html 3.尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能 当我们点击编辑案例的时候,我 ...

  3. 两张Number()函数图和Boolean()函数图

  4. SRC(不定期更新)

    主域名收集 响应包 Content-Security-Policy-Report-Only

  5. 《剑指offer》面试题48. 最长不含重复字符的子字符串

    问题描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.   示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ...

  6. 如何理解python中的cmp_to_key()函数

    cmp_to_key() 在functools包里的函数,将老式的比较函数(cmp function)转化为关键字函数(key function). 与接受key function的工具一同使用(如 ...

  7. gorm连接mysql和模型定义那些事

    1. gorm操作mysql: 1.1 安装gorm gorm官网: https://gorm.io/zh_CN/docs/connecting_to_the_database.html gorm的g ...

  8. IoC容器-Bean管理XML方式(注入外部bean)

    注入属性-外部bean (1)创建两个类service类和dao类 (2)在service调用dao里面的方法 (3)在spring配置文件中进行配置

  9. Serverless计算

    云服务的演化历程 整个it系统服务的搭建,随着时间有多个层级的演化.从最早的内部部署(On-premises) 到基于云的Iaas,Paas,Saas,Baas, Faas.服务的构建对开发者越来友好 ...

  10. 微信小程序入门教程之三:脚本编程

    这个系列教程的前两篇,介绍了小程序的项目结构和页面样式. 今天,接着往下讲,教大家为小程序加入 JavaScript 脚本,做出动态效果,以及如何跟用户互动.学会了脚本,就能做出复杂的页面了. 本篇的 ...