蓝桥杯——带分数
来源:互联网 发布:javascript能做什么 编辑:程序博客网 时间:2024/06/05 02:08
问题描述
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 <cstring>using namespace std;int vis[10];int old[10];int check(int x){ do { int tmp = x % 10; if(tmp == 0) { return 0; } if(vis[tmp]!=0) return 0; vis[tmp]++; } while(x = x / 10); return 1;}int checkOk(void){ if(vis[0] != 0) { return 0; } for(int i = 1; i < 10; i++) { if(vis[i] != 1) { return 0; } } return 1;}int main(void){ int num; cin >> num; int left, up, down; int count = 0; for(left = 1; left < num; left++) { memset(vis, 0, sizeof(vis)); if(!check(left)) { continue; } for(down = 1; down < 10000; down++) { memcpy(old, vis, sizeof(vis)); if(!check(down)) { memcpy(vis, old, sizeof(vis)); continue; } up = (num - left) * down; if(!check(up)) { memcpy(vis, old, sizeof(vis)); continue; } if(!checkOk()) { memcpy(vis, old, sizeof(vis)); continue; } memcpy(vis, old, sizeof(vis)); //cout << left << " + " << up << " / " << down << endl; count++; } } cout << count << endl; return 0;}
0 0
- 蓝桥杯——带分数
- 蓝桥杯——带分数
- 蓝桥杯——带分数
- 带分数——解题报告
- 蓝桥杯——历年真题之带分数
- 蓝桥杯历届试题——带分数(dfs+全排列)
- 蓝桥杯(历届真题)——带分数 dfs遍历
- 【蓝桥杯】带分数
- 带分数 - 蓝桥杯
- 蓝桥杯,带分数
- 蓝桥杯 带分数
- 蓝桥杯-带分数
- 蓝桥杯:带分数
- 蓝桥杯 带分数
- 蓝桥杯---带分数
- 蓝桥杯 带分数
- 蓝桥杯 带分数
- 蓝桥杯带分数
- 用makedown写文章的一些小想法
- Spring Cloud构建微服务架构(五)服务网关
- 查看android程序的CPU和内存消耗情况
- 安卓快速开发常用快捷键以及缩写
- 单点登陆入门
- 蓝桥杯——带分数
- CXF处理JavaBean以及复合类型
- vue 相关文章目录
- mysql 查询所有表的行数
- 如何访问虚拟机中的Web服务
- [译]使用DiffUtil更新RecyclerView的智能方式
- Android Studio 2.3.1修复了Instant Run的BUG
- meta 详解,html5 meta 标签日常设置
- 协程函数举例