问题描述:
输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a~j恰好 为数字0~9的一个排列(可以有前导0),2≤n≤79。
样例输入:
62
样例输出:
79546 / 01283 = 62
94736 / 01528 = 62
解决方案:
#include<iostream>
#include<set>
using namespace std;
set<int> s;
int main(){
int a[5]={0},b[5]={0}; //初始化各位为零,避免有时首位为零
int n,k1,k2,i,m; //k1代表除数,k2代表被除数
scanf("%d",&n);
for(m=98765;m>1234;m--){
s.clear(); //清空set集合里的数字
k1=m;
if(k1%n==0){
k2=k1/n;
// printf("%d\n",k1);
for(i=4;i>=0;i--){
a[i]=k1%10;
k1/=10;
}
for(i=4;i>=0;i--){
b[i]=k2%10;
k2/=10;
}
for(i=0;i<5;i++){
s.insert(a[i]);
s.insert(b[i]);
}
if(s.size()==10){
printf("%d%d%d%d%d / %d%d%d%d%d = %d\n\n",a[0],a[1],a[2],a[3],a[4],
b[0],b[1],b[2],b[3],b[4],
n);
}
}
}
return 0;
}