题目描述:
100 可以表示为带分数的形式:100 = 3 + 69258 / 714。
还可以表示为:100 = 82 + 3546 / 197。
注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。
类似这样的带分数,100 有 11 种表示法。
输入:
从标准输入读入一个正整数N (N<1000*1000)
输出:
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
样例输入:
100
样例输出:
11
题目分析:
1~9全排列求出满足a1+a2/a3的排列组合的数目。
可以得出是将排列分为三个部分(a1,a2,a3),
使用两个for循环控制三个部分的长度,
(1,i)为a1长度,(i+1,j)为a2长度,(j+1,9),为a3长度。
然后用if判断是否满足式子成立。
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n,k=0;