0
点赞
收藏
分享

微信扫一扫

洛谷P1618 三连击(升级版)

后来的六六 2022-03-14 阅读 43
蓝桥杯c++

1.首战自己写:(巨蠢)80分

#include<iostream>
using namespace std;
int tc[10000][3], A_[10000], B_[10000], C_[10000];
int main()
{
	int a, b, c, d, e, f, g, h, i = 0 , A, B, C, tmp1, tmp2,tmp3, k,  judge[11] = { 0 },  p = 0, q = 0,x=0,cnt[10000],flag=0;
	cin >> A >> B >> C;
	for (int a = 1; a <= 9; a++)
		for (int b = 1; b <= 9; b++)
			for (int c = 1; c <= 9; c++)
				for (int d = 1; d <= 9; d++)
					for (int e = 1; e <= 9; e++)
						for (int f = 1; f <= 9; f++)
						{
							if (a != b && a != c && a != d && a != e && a != f && b != c && b != d && b != e && b != f && c != d && c != e && c != f && d != e && d != f && e != f)
							{
								tmp1 = a * 100 + b * 10 + c;
								tmp2 = d * 100 + e * 10 + f;
								if (tmp1*1.0 / A == tmp2*1.0 / B)
								{

									judge[a] = 1;
									judge[b] = 1;
									judge[c] = 1;
									judge[d] = 1;
									judge[e] = 1;
									judge[f] = 1;
									for (k = 1; k <= 9; k++)
										if (judge[k] == 0)
											tc[i][q++] = k;

									q = 0;

									judge[a] = 0;
									judge[b] = 0;
									judge[c] = 0;
									judge[d] = 0;
									judge[e] = 0;
									judge[f] = 0;
									A_[i] = tmp1;
									B_[i] = tmp2;
									i++;
								}
							}
						}
	for (k = 0; k < i; k++)//对每一组A[],B[]找C[]
	{
		p = 0;
		for (g = 0; g < 3; g++)
			for (h = 0; h < 3; h++)
				for (f = 0; f < 3; f++)
				{
					if (g != h && g != i && h != i)
					{
						tmp3 = 100 * tc[k][g] + 10 * tc[k][h] + tc[k][f];
						if (tmp3*1.0 / C == A_[k]*1.0 / A)
						{
							C_[k] = tmp3;
							p = 1;
						}
					}
				}
		if(p==1)
		{
			cnt[x++] = k;//把每一个有三个数的组储存下来
			flag = 1;
		}

	}
	if (flag == 0)
		cout << "No!!!";
	else
	for (i = 0; i < x; i++)
		printf("%d %d %d\n", A_[cnt[i]], B_[cnt[i]], C_[cnt[i]]);

				
}
举报

相关推荐

0 条评论