历届试题 带分数  
时间限制:1.0s   内存限制:256.0MB
      
问题描写叙述

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

思路:简单DFS,先枚举整数部分,然后再DFS枚举分母就可以



AC代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std; int flag[20], n;
int ans;
int ll;//ll为去掉整数位数而剩下的位数
int v;//v为分数的整数值) int fun(int x) {
int len = 0;
while(x) {
int t = x % 10;
if(flag[t]) return 0;
flag[t] = 1;
x /= 10;
len++;
}
ll = 9 - len;
return 1;
} int judge(int x, int l) {
int len = 0;
int a[20];
memcpy(a, flag, sizeof(flag));
while(x) {
int t = x % 10;
if(a[t]) return 0;
a[t] = 1;
x /= 10;
len ++;
}
int ff = 1;
for(int i = 1; i < 10; i++) {//看数字1到9是否都用到了
if(a[i] == 0) ff = 0;
} if(ff && len == ll - l) return 1;
return 0;
} void dfs(int len, int x) { //len为此时分母所占的位数。x为分母
if(len <= ll / 2) {
if(judge(v * x, len)) //v*x为分子
ans ++;
for(int i = 1; i < 10; i++) {
if(flag[i]) continue;
flag[i] = 1;
dfs(len + 1, x * 10 + i);
flag[i] = 0;
}
}
} int main() {
while(cin >> n) {
ans = 0;
for(int i = 1; i < n; i++) {
memset(flag, 0, sizeof(flag));
if(fun(i)) {
v = n - i;
dfs(0, 0);
}
} cout << ans << endl;
}
return 0;
}

蓝桥杯 - 带分数 (DFS)的更多相关文章

  1. 蓝桥杯 带分数 DFS应用

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

  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. VC与JavaScript交互(一) ———— 怎样实现

    为什么要让VC与JavaScript交互? 1.有时候我们须要让自己的软件打开一个网页.来获取页面上的一些数据. 这时,能够用mshtml解析HTML提取出数据.也能够向HTML文档动态写入我们准备好 ...

  2. Geeks - Range Minimum Query RMQ范围最小值查询

    使用线段树预处理.能够使得查询RMQ时间效率在O(lgn). 线段树是记录某范围内的最小值. 标准的线段树应用. Geeks上仅仅有两道线段树的题目了.并且没有讲到pushUp和pushDown操作. ...

  3. Project Euler:Problem 37 Truncatable primes

    The number 3797 has an interesting property. Being prime itself, it is possible to continuously remo ...

  4. 转:utf8汉字编码16进制对照

    http://blog.chinaunix.net/uid-25544300-id-3281847.html GB    Unicode  UTF-8     Chinese Character Co ...

  5. USACO 2.1 Ordered Fractions

    Ordered Fractions Consider the set of all reduced fractions between 0 and 1 inclusive with denominat ...

  6. vue中slot组件的使用

    插槽(Slot)是Vue提出来的一个概念,正如名字一样,插槽用于决定将所携带的内容,插入到指定的某个位置,从而使模板分块,具有模块化的特质和更大的重用性. Slot 是在组件模板中设置的用于在父组件中 ...

  7. React router内是如何做到监听history改变的

    问题背景 今天面试的时候,被问到这么个问题.在html5的history情况下,pushstate和replacestate是无法触发pushstate的事件的,那么他是怎么做到正确的监听呢?我当时给 ...

  8. 使用DWR实现JS调用服务端Java代码

    DWR简介 DWR全称Direct Web Remoting,是一款非常优秀的远程过程调用(Remote Procedure Call)框架,通过浏览器提供的Ajax引擎实现在前端页面的JS代码中调用 ...

  9. Android Handler学习笔记

    已经习惯了挖坑不填,继续任性一下,周一到周五继续挖坑,每周六周日负责填坑. 1.从Android UI线程谈起 出于性能考虑,Android 中的UI操作并不是线程安全的,所以Android中规定只能 ...

  10. Hibernate框架学习(八)——查询-HQL语法

    一.单表查询 1.基础语法 2.排序 3.条件 4.分页 5.聚合 6.投影 二.多表查询 1.回顾原生SQL 1>交叉连接-笛卡尔积(避免)select * from A,B; 2>内连 ...