解题思路:提供一种新型的解题思路,利用头文件#include <algorithm>下的next_permutation,简单介绍一下它,next_permutation(start,end)是algorithm标准库中的一个标准函数库,它可以在表示[start,end)内存的数组中严格产生下一个字典序排列。具体来说就是把[2,3,1]---->[3,1,2]---->[3,2,1]

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
	int  a[10];
	for(int i=1;i<=9;i++)
	{
		a[i]=i;//将1,2,3,4,5,6,7,8,9放入数组
	}
	long long x,y,z;
	do{
		x=a[1]*100+a[2]*10+a[3];
		y=a[4]*100+a[5]*10+a[6];
		z=a[7]*100+a[8]*10+a[9];
		if(2*x==y&&3*x==z&&3*y==2*z)//避免浮点误差
		cout<<x<<" "<<y<<" "<<z<<endl;
	}while(next_permutation(a+1,a+10));//全排列完之后结束
	return 0;
} 

//下面是任意比例的X,Y,Z的求解
#include <iostream> 
#include <algorithm>
using namespace std;
long long x,y,z,a,b,c;//a,b,c表示x,y,z三个数的比例
int main()
{
	int  a[10];
	cin>>a>>b>>c;
	for(int i=1;i<=9;i++)
	{
		a[i]=i;//将1,2,3,4,5,6,7,8,9放入数组
	}
	do{
		x=a[1]*100+a[2]*10+a[3];
		y=a[4]*100+a[5]*10+a[6];
		z=a[7]*100+a[8]*10+a[9];
		if(b*x==y*a&&c*y==b*z)//避免浮点误差
		cout<<x<<" "<<y<<" "<<z<<endl;
	}while(next_permutation(a+1,a+10));//全排列完之后结束
	return 0;
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论