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

思路:

1.先枚举全排列

2.枚举位数

3.判断是否满足要求

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

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; const int N = 30;
int target,ans = 0;
bool had_use[N],ever[N]; bool check(int a, int c)
{
int b = c*target - c*a; //写出式子,算出b
if (!a || !b || !c) return false;
memcpy(ever, had_use, sizeof had_use); //拷贝had_use数组给ever,这样能不改变原来的数组
while (b)
{
int t = b % 10;
if (!t || ever[t]) return false;
ever[t] = true;
b /= 10;
}
for (int i = 1; i <= 9; i++)//判断1-9每个数字有没有都被用到
if (!ever[i]) return false;
return true;
} void dfs_c(int x, int a, int c)//x表示用了多少个数字,a表示枚举的a的大小,c表示c的大小
{
if (x >= 10) return;//如果1-9全部都已经被枚举了,则退出
if (check(a,c)) ans++; //检验a和c是否满足要求,满足则方案书+1
for (int i = 1; i <= 9; i++)
{
if (!had_use[i])
{
had_use[i] = true;
dfs_c(x+1, a, c*10+i);
had_use[i] = false;
}
}
} void dfs_a(int u, int a)//u表示枚举到第几个位置,也就是用了多少个数字,t表示当前的a是多少
{
if (a >= target) return;
if (a) dfs_c(u, a, 0); //如果a满足要求,则对c进行枚举 for (int i = 1; i <= 9; i++)
{
if (!had_use[i])
{
had_use[i] = true;
dfs_a(u+1, a * 10 + i);//将i加在a的各位
had_use[i] = false; //回溯,恢复现场
}
} }
int main()
{
scanf("%d", &target);
dfs_a(0,0); //先枚举a
printf("%d", ans);
return 0;
}

带分数--第四届蓝桥杯省赛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. mongodb基础整理篇————简单介绍[一]

    前言 简单介绍一下文档数据库. 正文 mongodb 是一个以json为数据模型的文档数据库. 这里要介绍一下什么是json.因为有些人认为'{a:1,b:2}' 是json,而"this ...

  2. SYCOJ1613递归函数

    题目-递归函数 (shiyancang.cn) 记忆化dfs,注意dp的限制范围 #include<bits/stdc++.h> using namespace std; const in ...

  3. 灵雀云Kube-OVN:基于OVN的开源Kubernetes网络实践

    近日,灵雀云发布了基于OVN的Kubernetes网络组件Kube-OVN,并正式将其在Github上开源.Kube-OVN提供了大量目前Kubernetes不具备的网络功能,并在原有基础上进行增强. ...

  4. linux开放端口关闭防火墙

    linux开放端口关闭防火墙 systemctl status firewalld查看当前防火墙状态. 开启防火墙      systemctl start firewalld开放指定端口       ...

  5. day 9 scanf输入和gets输入的区别

    (1).计算机高级语言程序运行方法有编译执行和编译解释两种,一下叙述中正确的是[A] A.C语言程序仅可以编译执行 B.C语言程序仅可以解释执行 C.C语言程序既可以编译执行又可以解释执行 D.以上说 ...

  6. 【刷题-LeetCode】151 Reverse Words in a String

    Reverse Words in a String Given an input string, reverse the string word by word. Example 1: Input: ...

  7. Cesium中级教程9 - Advanced Particle System Effects 高级粒子系统效应

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 要了解粒子系统的基础知识,请参见粒子系统入门教程. Weathe ...

  8. python input函数

    函数 input() 让程序暂停运行,等待用户输入值,之后再把值赋给变量,输出.

  9. python20day

    昨日回顾 正则表达式 元字符 量词 贪婪非贪婪 转义符 re模块 findall 会优先显示分组内容 取消优先显示(?: ) search 只能返回第一个符合条件的项 得到的结果需要.group()取 ...

  10. 蓝桥杯试题 基础练习 2n皇后问题以及n皇后问题

    在学习2n皇后之前,我们应该认识一下n皇后问题: 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于 ...