#include <iostream>
#include<algorithm>
using namespace std;
int main() {
	int a[10],i,j,n,m,k;
	for (i = 0; i < 10; i++)
		a[i] = i;
	//祥瑞生辉+三羊献瑞=三羊生瑞气
	//三羊生瑞气祥辉献分布用a[0]-a[7]表示
	
	do {
		n = a[5] * 1000 + a[3] * 100 + a[2] * 10 + a[6];
		m = a[0] * 1000 + a[1] * 100 + a[7] * 10 + a[3];
		k = a[0] * 10000 + a[1] * 1000 + a[2] * 100 + a[3] * 10 + a[4];
		if(a[0]==1)//可知“三”必定为1,这样写可以减少计算量
		if (n + m == k)
		{
			cout << n << " " << m << " " << k;
			cout << endl;
			break;
		}
		
	} while (next_permutation(a, a + 10));//用于生成0-9的全排列,因为汉字只有8个因此可以只取排列的前8个数字,此时前8个数字为0-9的全排列,有重复
	                      //同理如果取排列的前5个数字则生成的为0-9的全排列,此时重复的更多,在一些题目上有应用场景                
	return 0;
}



//另一个例题  题目地址: https://www.lanqiao.cn/courses/2786/learning/?id=67637
/*
#include <cstdio>
#include <algorithm>
#include <iostream> 
using namespace std;
int main()
{
   int  i,j,k,sum=0,a[9];
    for (i = 0; i < 9; i++)
        a[i] = i + 1;
    int A, B, C, DEF, GHI;
   
    do
    {
        A = a[0];
        B = a[1];
        C = a[2];
        DEF = a[3] * 100 + a[4] * 10 + a[5];
        GHI = a[6] * 100 + a[7] * 10 + a[8];
       // cout << A << " " << B << " " << C << " " << DEF << " " << GHI << endl;
        if ((A + B*1.0 / C + DEF*1.0 / GHI) == 10)
            sum++;
    } while (next_permutation(a, a + 9));
   
    cout << sum;
    return 0;

}


*/