将整数换成分数 【题目描述】 一个小于 100 万的正整数 n,尝试把 n 变成带分数形式,也就是 n=a+b/c,其中 a,b,c 是三个正整数,并且数字 1~9(不含 0)在 a、b、c 中,必须出现,且只能 出现一次。例如:100=3 + 69258/714,其中 1 到 9 这 9 个数字全都出现了,并且只 出现一次。当然,100 还等于 82 + 3546/197,也就是说将 100 变成带分数形式,会 有两种组合方式。事实上 100,可以写成 11种 1 到 9 组成整数加上分数的形式。 请编写一个程序,根据一个输入 N,程序输出该数字用数码 1~9 不重复不遗漏地 组成带分数表示的全部可能性。不要求输出每个表示,只输出有多少种表示法! 【输入格式】 输入一行,表示要分解的正整数。 【输出格式】 输出一行,表示有多少分法。 【样例输入】 100 【样例输出】 11 【注意事项】 请严格按要求输出,不要多余的打印语句,例如:“输入x=... ” 等多余内容。 本程序的代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意: main 函 数需要返回 0。注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或 操作系统的特殊函数。注意 : 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。
正确答案:参考程序(Python):带分数n=a+b/c。对1-9全排列,枚举切分点分a,b,c三段,判断a+b/c==n。count++输出。样例100→11。核心:全排列枚举带分数。
试卷来源:2024全国青少年信息素养大赛C++算法创意实践挑战赛(小学组_复赛)真题