博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯 - [2013年第四届真题]带分数(全排列)
阅读量:1999 次
发布时间:2019-04-28

本文共 919 字,大约阅读时间需要 3 分钟。

题目链接:

时间限制:1.0s 内存限制:256.0MB

问题描述

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

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

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

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

输入格式

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

输出格式

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

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

样例输入

100

105

样例输出

11

6

解题思路

先得到9个数的全排列(可以用DFS),再对每种排列方式插入+和/,统计满足的情况。

#include 
using namespace std;int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};int main() { int den, n, ans = 0; scanf("%d", &n); do { for (int i = 0, teg = 0; i < 9; i++) { teg = teg * 10 + a[i]; for (int j = i + 1, mol = 0; j < 9; j++) { mol = mol * 10 + a[j]; den = 0; for (int k = j + 1; k < 9; k++) den = den * 10 + a[k]; if (den * (n - teg) == mol) ans++; } } } while (next_permutation(a, a + 9)); printf("%d\n", ans); return 0;}

转载地址:http://lmftf.baihongyu.com/

你可能感兴趣的文章
Spring JPA整合QueryDSL
查看>>
Java编程思想笔记——第五章 初始化和清理
查看>>
关于java.text.SimpleDateFormat的parse()方法存在的坑
查看>>
Java编程思想笔记——第十章 内部类
查看>>
Java编程思想笔记——第十四章 类型信息
查看>>
为什么商业搜索引擎选择的索引更新策略是完全重建策略
查看>>
MySQL学习笔记——慢查询
查看>>
elastic-job监控平台搭建
查看>>
Java实现排列组合
查看>>
通俗易懂的Java线程不安全
查看>>
PL/SQL学习笔记之异常
查看>>
PL/SQL学习笔记之触发器
查看>>
Memcache内存缓存框架
查看>>
Redis
查看>>
Python字符编码和转码
查看>>
commons-dbutils【不推荐】
查看>>
SOCAT端口转发
查看>>
docker快速搭建HTTP代理
查看>>
jpa的entry审查Auditing
查看>>
前端学习 -- 颜色
查看>>