博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯 2013_9 带分数
阅读量:4216 次
发布时间:2019-05-26

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

思路:1-9全排列
然后对每个排列划分为三段,判断是否满足x+y/z的形式
 
#include
#include
#include
#include
using namespace std;int n;int a[15];bool vis[15];int ans;void print(int *a) { for(int i = 1; i <= 10; ++i){ cout << a[i] <<" "; } } int cal(int st,int en) { int num = 0; for(int i = st; i <= en; ++i){ num = num*10 + a[i]; } return num; } void judge(int a[]){//x + y/z for(int i = 1; i < 9; ++i){ int x = cal(1,i); if(x >= n)//如果 x大于n了 肯定不满足 break; for(int j = i+(9-i)/2; j <= 9; ++j){//分子数字位数大于等于分母的 减少计算 int y = cal(i+1,j-1); int z = cal(j,9);//不知道为啥不能 cal(j+1,9) if((y%z == 0) && (x + y/z == n)) ++ans; } } } void dfs(int pos)//算出 1-9的全排列 { if(pos == 10){ judge(a); return ; } for(int i = 1; i <= 9; ++i){ if(!vis[i]){ vis[i] = true; a[pos] = i; dfs(pos+1); vis[i] = false; } } }int main() { while(cin >> n){ ans = 0; dfs(1); cout <
<

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

你可能感兴趣的文章
java中的mmap实现
查看>>
Redis的Aof被阻塞原因调查
查看>>
Redis Cluster的FailOver失败案例分析
查看>>
Android Alarm驱动源代码分析(Alarm.c)
查看>>
S3C2440上LCD驱动 (FrameBuffer)实例开发讲解
查看>>
Linux音频编程指南
查看>>
usb-otg-调试心得
查看>>
USB规范浏览--设备和主机规范
查看>>
男人的品位--我们自己的最求
查看>>
Android (Linux) Suspend流程
查看>>
LINUX时间管理
查看>>
定时器的使用
查看>>
为Android加入busybox工具
查看>>
使用技巧busybox
查看>>
如何查看与/dev/input目录下的event对应的设备
查看>>
bootloader-bootable解析
查看>>
bootloader (LK)&&android lk bootloader中相关修改指南
查看>>
SD卡驱动分析--基于高通平台
查看>>
SD Card 驱动流程分析
查看>>
Linux之debugfs介绍
查看>>