末日流光


私信TA

用户名:user1542043226

访问量:2846

签 名:

等  级
排  名 4259
经  验 1731
参赛次数 2
文章发表 7
年  龄 20
在职情况 学生
学  校 武汉城市学院
专  业

  自我简介:

解题思路:提供一种新型的解题思路,利用头文件#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分

1 人评分

  评论区

  • «
  • »