题目大意:将一个数表示为带分数的形式:N=A+B/C;其中A、B、C用1~9表示;
解题思路:
1.先将1~9进行全排列;
全排列的表示方法(其中头文件为#include <algorithm>)
next_permutation(num,num+3)
其中num为数组,3表示数组的大小;具体请参见https://blog.youkuaiyun.com/howardemily/article/details/68064377
2.对每种排列情况,把1~9分成3份,一共有(C 8,2)种情况(1~9之间有8个间隔,只需取2个间隔就可将数字分成8等份);
源码附上:
#include <iostream>
#include <algorithm>
using namespace std;
int A[9] = { 1,2,3,4,5,6,7,8,9 };
int main()
{
int N,count=0;
cin >> N;
do
{
//{0,i-1},{i-1,j},{j,8};
for (int i = 0; i <=6; i++)//第一道分割线
{
for (int j = i+1; j<=7; j++)//第二道分割线
{
int num1 = 0, num2 = 0, num3 = 0;
for (int a = 0; a <=i; a++)
{
num1 = num1 * 10 + A[a];
}
for (int b = i+1; b <=j; b++)
{
num2 = num2 * 10 + A[b];
}
for (int c = j+1; c <= 8; c++)
{
num3 = num3 * 10 + A[c];
}
if (num2%num3 == 0 && (num1 + num2 / num3) == N)
{
count++;
}
}
}
} while (next_permutation(A, A + 9));
cout << count << endl;
return 0;
}