蓝桥杯 c语言 带分数,蓝桥杯 带分数 DFS应用

问题描述

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

#include

#include

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

#include

#include

#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

#include

#include

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()轻松解决..

蓝桥杯 - 带分数 (DFS)

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

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

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

蓝桥杯 全球变暖&lpar;dfs&rpar;

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

POJ 2676 - Sudoku - &lbrack;蓝桥杯 数独&rsqb;&lbrack;DFS&rsqb;

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

蓝桥杯PREV-12&lpar;dfs&amp&semi;割点&rpar;

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

蓝桥杯---数独(模拟 &vert;&vert; dfs)

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

蓝桥杯---剪格子&lpar;DFS&amp&semi;BFS&rpar;(小总结)

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

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

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

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

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

随机推荐

java&period;lang&period;NullPointerException的可能原因及处理

java.lang.NullPointerException的可能原因及处理 java.lang.NullPointerException具体意思是空指针异常,最常见的问题就是没有初始化. 字符串等数 ...

Visual Studio 2015 正式版 官方下载地址

Visual Studio 2015昨日正式版发布,期待7.29正式版Win10的发布. Visual Studio 2015 各版本简体中文与English的下载地址详见下文. 另: Visual ...

主DNS配置

一,安装BIND [root@localhost ~]# yum install bind bind-chroot bind-utils Loaded plugins: product-id, sub ...

paip&period;汉字简化大法总结

paip.汉字简化大法总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.youkuaiyun.com/attilax ...

使用Cydia Substrate 从Native Hook Android Native世界

同系列文章: 使用Cydia Substrate 从Native Hook Android Java世界 使用Cydia Substrate Hook Android Java世界 一.建立工程 手机 ...

Vue&period;js 基本功能了解

一.写在前面 隔了这么久才来出Vue的第二篇文章,真是堕落了,自己先惩罚下/(ㄒoㄒ)/~~ 回过头看自己第一篇相关文章(http://www.cnblogs.com ...

&lpar;4&rpar;进程---daemon守护线程和join阻塞

join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用 ...

leetcode-algorithms-20 Valid Parentheses

leetcode-algorithms-20 Valid Parentheses Given a string containing just the characters '(', ')', '{' ...

转:Spring中事物管理

1.什么是事务? 事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败 2.事物具有四大特性ACID 说到事务,就不得不说其4大特性,主要如下 原子性:(atomicity) 原子性指的是事务是 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值