还一个很坑的地方,求分子分母位数时,最好控制分母的位数,因为有上限为9,便于控制如果控制分子来弄,会报错
#include<iostream>
#include<algorithm>
#include<string>
#include<stdlib.h>
#define N 1000
using namespace std;
int main()
{
int a;//输入的带分数
cin >> a;
int sum = 0;//总数
string a1 = "123456789";
do {
for (int i = 1; i <= 7; i++)
{
string b1 = a1.substr(0, i);//+号前面
if (stoi(b1) >= a)
continue;
for (int j = 1; j < 9 - i - 1; j++)
{
string b2 = a1.substr(i, j);//加号后除号前(分子)
string b3 = a1.substr(i+j);//除号后(分母)
int c1, c2, c3;
c1 = stoi(b1);
c2 = stoi(b2);
c3 = stoi(b3);
if (c1 + c3 / c2 == a&&c3%c2==0)//if(c1 + c2 / c3== a&&c2%c3==0)
sum++;
}
}
} while (next_permutation(a1.begin(),a1.end()));
cout << sum;
return 0;
}