题目要求:
输入正整数n,按从小到大的顺序输出所有形如abcde / fghij = n的表达式,其中a~j 恰好为数字0~9的一个排列(可以有前导0),2≤n≤79。
样例输入:
62
样例输出:
79546 / 01283 = 62
94736 / 01528 = 62
算法分析: 不需要枚举出0-9的全部排列,否则10!实在是太大了,我们只需要枚举出fghij就可以计算出abcde,或者枚举出abcde就可以计算出fghij。
步骤:
先枚举出fghij,可以是0为前导。
然后用sum代表fghij的数,cnt=sum*n,表示abcde。
如果cnt超过五位数就continue;
如果不超过五位数,就计算出abcde分别为多少。
然后把这十个数存入buf数组,判断是否有相同数字,若没有,并且是十个数字,就可以输出。
代码:
#include <iostream>
using namespace std;
int main()
{
int cnt=0;
int sum=0;
int n;
cin>>n;
for(int f=0;f<10;f++){
for(int g=0;</