博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
历届试题 带分数
阅读量:6714 次
发布时间:2019-06-25

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

历届试题 带分数  

时间限制:1.0s   内存限制:256.0MB
      
问题描述

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
#include
using namespace std;bool used[10];int a[10], N, total;void permutation(int pos){ if (pos == 9){ int p = 1, q = 9;//+、/位置 int x, y, z;//x+y/z==N? for (p = 1; p < 9; p++){ x = 0; for (int i = 1; i <= p; i++)x = x * 10 + a[i]; if (x >= N)break; for (q = 9; q>p; q--){ y = 0; z = 0; for (int i = q; i <= 9; i++)z = z * 10 + a[i]; for (int i = p + 1; i < q; i++)y = y * 10 + a[i]; if (z>y)break; if ((y%z==0)&&((x + y / z) == N)){ total++; //cout << "x y z " << x << "," << y << "," << z << endl; } } } return; } for (int i = 1; i < 10; i++){ if (!used[i]){ used[i] = true; a[pos + 1] = i; permutation(pos + 1); used[i] = false; } }}int main(){ cin >> N; total = 0; permutation(0); cout << total << endl; system("pause"); return 0;}

 

转载于:https://www.cnblogs.com/littlehoom/p/3561722.html

你可能感兴趣的文章
redis 主从配置和集群配置
查看>>
手机3D游戏开发:自定义Joystick的相关设置和脚本源码
查看>>
window.frames["detailFrm"].isSubmitting = true;//?起什么作用
查看>>
ASCII表
查看>>
idea之debug
查看>>
什么是真正的流程管理?流程管理的是与不是。
查看>>
洛谷P1613 跑路
查看>>
python各种模块,迭代器,生成器
查看>>
微信小程序 watch监听数据变化 类似vue中的watch
查看>>
服务器端推送技术
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
修改SQL Server 的排序规则
查看>>
Windows 8部署系列PART2:部署先决条件准备
查看>>
微软私有云分享(R2)18Windows Azure Pack 命令行安装
查看>>
基于ArcGIS10.0和Oracle10g的空间数据管理平台十五(C#开发)-空间数据导出
查看>>
DB2 应用
查看>>
第十六章 为什么说张清“虎头蛇尾”
查看>>
ShiftOperators.cs
查看>>
C#中的预处理命令
查看>>
Assistance Required(打表)
查看>>