问题描述

100 可以表示为带分数的形式:100 = 3 + 69258 / 714。

还可以表示为:100 = 82 + 3546 / 197。

注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。

类似这样的带分数,100 有 11 种表示法。

输入格式

从标准输入读入一个正整数N (N<1000*1000)

输出格式

程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。

注意:不要求输出每个表示,只统计有多少表示法!

样例输入1
100
样例输出1
11
样例输入2
105
样例输出2
6
 //法一
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std; int num[] = {, , , , , , , , },
N, ans; int getSum(int lh, int rh)
{
int sum = ;
for (int i = lh; i <= rh; i++)
{
sum = sum * + num[i];
}
return sum;
} void check()
{
for (int i = ; i < ; i++)
{
int a = getSum(, i);
if (a > N) continue;
for (int j = i + ; j < ; j++)
{
int b = getSum(i + , j);
int c = getSum(j + , );
if (b >= c && b % c == && (a + b/c == N)) {
ans++;
}
}
}
} void solve()
{
cin >> N;
do {
check();
} while(next_permutation(num, num + ));
printf("%d\n", ans);
} int main()
{
solve();
return ;
}

 //法二

 #include <algorithm>
#include <cstring>
#include <queue>
#define INF 0x3f3f3f3f
#define MAXN 100005
#define Mod 10001
using namespace std;
int vis[], n , ans;
int num[]; int getSum(int lh, int rh)
{
int sum = ;
for (int i = lh; i <= rh; i++) {
sum = sum * + num[i];
}
return sum;
} void check()
{
for (int i = ; i <= ; i++) {
int a = getSum(, i);
if (a > n) continue;
for (int j = i + ; j < ; j++) {
int b = getSum(i + , j); //[i+1, j]
int c = getSum(j + , ); //[j+1, 9]
if (b >= c && b % c == && a + b/c == n) {
ans++;
}
}
}
} void dfs(int step)
{
if (step == ) {
check();
}
else {
for (int i = ; i <= ; i++) {
if (!vis[i]) {
num[step] = i;
vis[i] = ;
dfs(step + );
vis[i] = ;
}
}
} } int main()
{
scanf("%d", &n);
ans = ;
memset(vis, , sizeof(vis));
dfs();
printf("%d\n", ans);
return ;
}
 //这里补充一个next_permutation()的用法
//蓝桥杯 2015省赛 第3题 三羊献瑞
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std; int a[] = {, , , , , , , , , };
int b, c;
int d; void solve()
{
do {
b = a[]* + a[]* + a[]* + a[];
c = a[]* + a[]* + a[]* + a[];
d = a[]* + a[]* + a[]* + a[]* + a[];
// if (b + c == d) {
// cout << b << " + " << c << " = " << d << endl;
// }
} while (next_permutation(a, a + ));
} int main()
{
solve();
return ;
}

//发现好多蓝桥杯省赛的题目 都可以用 next_permutation()轻松解决..

//还有之前整理的一个题目: http://www.cnblogs.com/douzujun/p/6669303.html

 
 

蓝桥杯 带分数 DFS应用的更多相关文章

  1. 蓝桥杯 - 带分数 (DFS)

      历届试题 带分数   时间限制:1.0s   内存限制:256.0MB        问题描写叙述 100 能够表示为带分数的形式:100 = 3 + 69258 / 714. 还能够表示为:10 ...

  2. java实现第四届蓝桥杯带分数

    带分数 题目描述 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一 ...

  3. 蓝桥杯 全球变暖(dfs)

    标题:全球变暖 [题目描述]你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: 其中"上下左右"四个方向上连在一起的 ...

  4. POJ 2676 - Sudoku - [蓝桥杯 数独][DFS]

    题目链接:http://poj.org/problem?id=2676 Time Limit: 2000MS Memory Limit: 65536K Description Sudoku is a ...

  5. 蓝桥杯PREV-12(dfs&割点)

    题目链接:http://lx.lanqiao.cn/problem.page?gpid=T35 题意:中文题诶- 思路:dfs 假设star 和 end之间总路径数目为ans, 那么若经过路径上某点到 ...

  6. 蓝桥杯---数独(模拟 || dfs)

    [编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...

  7. 蓝桥杯---剪格子(DFS&BFS)(小总结)

    问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...

  8. 蓝桥杯之大臣的旅费(两次dfs)

    Description 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个 ...

  9. 蓝桥杯之剪格子(经典dfs)

    如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+--+-- ...

随机推荐

  1. uwsgi+django架构程序内部无法获取全局变量

    近期开发了一个djangoi程序,用django自带的python manage.py runserver 0.0.0.0:80 运行方式无任何问题,但用django+nginx+uwsg部署运行有时 ...

  2. 用Beyond Compare比较文本时,忽略不重要文本的方法

    Beyond Compare是一款好用的文本比较工具,可以比较纯文本文件.源代码和HTML,Word文档.Adobe和pdf文件.在使用Beyond Compare比较文本文件时,有些不重要的文本差异 ...

  3. kubeadm安装kubernetes 1.13.1集群完整部署记录

    k8s是什么 Kubernetes简称为k8s,它是 Google 开源的容器集群管理系统.在 Docker 技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提 ...

  4. java 中的内部类总结

    内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类. 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动). 显 ...

  5. PAT甲题题解-1096. Consecutive Factors(20)-(枚举)

    题意:一个正整数n可以分解成一系列因子的乘积,其中会存在连续的因子相乘,如630=3*5*6*7,5*6*7即为连续的因子.给定n,让你求最大的连续因子个数,并且输出其中最小的连续序列. 比如一个数可 ...

  6. 第二阶段团队冲刺——One

    个人任务: 司宇航:处理第一次启动服务器500的问题. 季方:优化cookie第一次运行出错的问题. 王金萱:修改注册界面. 马佳慧:修改登录界面. 站立会议: 任务看板和燃尽图:

  7. JavaScript编码命名规范及格式规范

    变量 局部变量命名采用首字母小写,其它单词首字母大写: //推荐 var printContent = 'hello world' //不推荐,变量名意义不明确 var objext = {}; // ...

  8. [转帖]你们知道LTE Cat.1到Cat.10 那Cat.0呢?

    你们知道LTE Cat.1到Cat.10 那Cat.0呢? https://network.pconline.com.cn/638/6389637_all.html#content_page_3 1大 ...

  9. k8s kubectl edit 方式修改 nodeport 的端口

    0. 买了一本 每天五分钟玩转 k8s 还有 刚才转帖的blog 里面有一个 kubectl edit 的语法能够在线更改端口号 ,之前一直没弄明白. 刚才做了下实验.发现很好用 这里记录一下. 1. ...

  10. [转帖] Linux 下面 Find的使用...--- 自己不会用 find

    13个实用的Linux find命令示例  原始博客地址:  https://www.cnblogs.com/chenshoubiao/p/4838089.html   之前只会用locate  基础 ...