问题描述

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

【分析】用深度优先搜索,将1~9形成一个全排列,根据整数部分、分子和分母的长度来分割整个排列。设整数部分为a,分子为b,分母为c,这个数字的带分数形式就是a + (b / c)。a和b的长度是1~7,c的长度是由a和b来确定的,三个数字的总长度是9。最后验证a + (b / c)是否等于输入的数字。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static int cnt = 0, num = 0;public static boolean isVisit[] = new boolean[10];public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));num = Integer.parseInt(reader.readLine());reader.close();for (int i = 1; i <= 7; i++) {for (int j = 1; j <= 7; j++) {if (9 - i - j >= 1) {dfs(0, 0, 0, i, j, 9 -i - j);}}}System.out.println(cnt);}public static void dfs(int a, int b, int c, int alen, int blen, int clen) {if (alen == 0 && 0 == blen && 0 == clen) {if (b % c == 0 && b / c == num - a) {cnt++;}return;}for (int i = 1; i < 10; i++) {if (!isVisit[i]) {isVisit[i] = true;if (0 < alen) {dfs(a * 10 + i, b, c, alen - 1, blen, clen);} else if (0 < blen) {dfs(a, b * 10 + i, c, alen, blen - 1, clen);} else if (0 < clen) {dfs(a, b, c * 10 + i, alen, blen, clen - 1);}isVisit[i] = false;}}}
}

蓝桥杯 PREV-3 历届试题 带分数 Java版相关推荐

  1. 蓝桥杯经典算法 不定方程解法 蓝桥杯练习系统 历届试题 买不到的数目

    蓝桥杯经典算法 第六讲 不定方程解法   蓝桥杯算法教学与培训_蓝桥杯经典算法 第六讲 不定方程解法 不定方程的一般解法   朴素算法 public static void main(String[] ...

  2. “蓝桥杯”练习系统——历届试题

    1. 核桃的数量(水题) 思路:求两个数的最大公约数可以用欧几里得算法(辗转相除法),即 a与b的最大公约数 等于 b与(a对b取余) 的最大公约数,当b等于0时,a与b的最大公约数是a.两个数的最小 ...

  3. 蓝桥杯练习系统历届试题 翻硬币

    问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...

  4. 蓝桥杯 ALGO30 算法训练 入学考试 java版

    问题描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...

  5. 蓝桥杯 ADV-205 算法提高 拿糖果 java版

    问题描述 妈妈给小B买了N块糖!但是她不允许小B直接吃掉. 假设当前有M块糖,小B每次可以拿P块糖,其中P是M的一个不大于根号下M的质因数.这时,妈妈就会在小B拿了P块糖以后再从糖堆里拿走P块糖.然后 ...

  6. 蓝桥杯 ALGO-27 算法训练 FBI树 Java版

    问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...

  7. 蓝桥杯 ALGO-13 算法训练 拦截导弹 Java版

    问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  8. 蓝桥杯 ALGO-148 算法训练 5-1最小公倍数 java版

    问题描述 编写一函数lcm,求两个正整数的最小公倍数. 样例输入 一个满足题目要求的输入范例. 例:3 5 样例输出 与上面的样例输入对应的输出. 例: 数据规模和约定 输入数据中每一个数的范围. 例 ...

  9. 【蓝桥杯VIP】试题 历届试题 带分数(满分 Python解法+Java解法)

    [蓝桥杯VIP]试题 历届试题 带分数(满分 Python解法+Java解法) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 100 可以表示为带分数的形式:100 = 3 + 6 ...

最新文章

  1. 微信小程序的数字有部分会自动加粗的解决方法
  2. mysqldumpslow基本使用
  3. python os 文件操作 os.rename(src, dst) 方法 os.renames()
  4. mongodb启动成功连不上_MySQL数据导入到MongoDb教程
  5. Hive高级用法汇总
  6. 工作145:vue里面取消console和debugger
  7. redis的使用场景和基本数据类型
  8. Spring容器创建流程(3)对beanFactory设置
  9. js中精度问题以及解决方案
  10. 找回 Windows 丢失的拨号密码
  11. mysql8 错误日志_MySQL 8 服务器日志
  12. centos更新yum时遇到的问题
  13. 苹果手机数据线充不了电_自动洗地机充不了电,洗地机厂家
  14. 数据分析实战(六):英国电商用户行为分析
  15. 在Linux上部署一些简单的服务,Linux进阶必看,定时任务
  16. 安卓10不支持qmc解码_魅族官宣内测安卓10 数十款机型支持和四大亮点加持
  17. js 获取下周一的具体年月日格式为(YYYY-MM-DD)
  18. 我彻底抛弃Windows,入坑MacBook
  19. mysql workbench8.0关键词大写_Mysql从入门到精通全文整理
  20. abaqus算界面脱粘_ABAQUS粘聚力模型(-Cohesive-Model-)-应用小结.pdf

热门文章

  1. Notification使用详解之二:可更新进度的通知
  2. Android 4.3 新特性
  3. PHP:header()函数
  4. android 线程之AsyncTask
  5. 应用Canary文件类型阻击勒索软件
  6. 模拟jQuery--获取事件的封装
  7. 30天敏捷结果(9):使用必须、应该、可以来确定每天事情的优先级
  8. 1.4万人的盛会——2010 VMWorld记行之一
  9. Git 存在多个漏洞,开发人员应及时更新
  10. Sophos 修复严重的防火墙 RCE 漏洞