带分数---搜索
来源:互联网 发布:三菱plc编程软件fx 编辑:程序博客网 时间:2024/06/05 19:45
问题描述
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 "vector"#include "set"#include "string.h"#include "fstream"using namespace std;int N;int cnt = 0;int a, b, c;int vis[10];int num[10];int sum(int start, int end){ int tmp = 0; for(int i=start; i<=end; i++) tmp = tmp * 10 + num[i]; return tmp;}void check(){ for(int k=1; k<=8; k++) { a = sum(1, k); if(a > N) return; for(int j=k+(9-k)/2; j<=8; j++) { b = sum(k+1, j); c = sum(j+1, 9); if(b>c && b%c==0 && N==a+b/c) cnt++; } }}void dfs(int depth){ if(depth == 10) { check(); } for(int i=1; i<=9; i++) { if(!vis[i]) { num[depth] = i; vis[i] = 1; dfs(depth+1); vis[i] = 0; num[depth] = 0; } }}int main(){ cin >> N; memset(vis, 0, sizeof(vis)); dfs(1); cout << cnt; return 0;}
0 0
- 带分数---搜索
- 带分数 - 搜索,next_permutaion妙用
- 蓝桥杯 带分数(搜索)
- 蓝桥杯 带分数 搜索
- 历届试题 带分数(搜索)
- 蓝桥杯--带分数(暴力搜索)
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- 带分数
- XenServer网络堆栈Bridge模式介绍
- Http Test测试工具说明
- java反射机制怎样调用类的私有方法?
- 电话正则表达式
- 349. Intersection of Two Arrays(C++实现)
- 带分数---搜索
- Swift - Realm数据库的使用详解(附样例)
- android中使用iconfont图标字体
- 常用数据结构
- 细说 #pragma pack(n)
- 正则表达式
- 优化sql查询
- 利用java反射机制调用类的public公有方法的例子
- iBeacon如何定位