1. 程式人生 > >洛谷P1008 三連擊

洛谷P1008 三連擊

題目背景

本題為提交答案題,您可以寫程式或手算在本機上算出答案後,直接提交答案文字,也可提交答案生成程式。

題目描述

將1,2,…,9共9個數分成三組,分別組成三個三位數,且使這三個三位數構成1:2:3的比例,試求出所有滿足條件的三個三位數。

輸入輸出格式

輸入格式:

木有輸入

輸出格式:

若干行,每行3個數字。按照每行第一個數字升序排列。

輸入輸出樣例

輸入樣例#1:
輸出樣例#1:

192 384 576
* * *
...
* * *
(輸出被和諧了)

WriteUp:

陣列記錄數字出現次數,迴圈遍歷可能的出現數字即可。

ps: 洛谷評測機似乎不支援初始化陣列採用

memset的方法,會編譯錯誤。。。

參考AC程式碼:

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

int num[9]={0};

int main(void){
	int j,k;
	for (int i=123;i*3<=987;i++)
	{

		//陣列置0

		for (int b=0;b<9;b++)
		{
			num[b]=0;
		}

		//取i的各個位數字,放入陣列記錄次數

		num[i/100-1]++;
		num[i/10%10-1]++;
		num[i%10-1]++;

		//取j的各個位數字,放入陣列記錄次數

		j = i*2;
		num[j/100-1]++;
		num[j/10%10-1]++;
		num[j%10-1]++;

		//取k的各個位數字,放入陣列記錄次數

		k = i*3;
		num[k/100-1]++;
		num[k/10%10-1]++;
		num[k%10-1]++;
		for (int a=0;a<9;a++)
		{

			//次數不為1,不符題意,跳過

			if (num[a]!=1)
			{
				break;
			}

			//陣列檢查完畢,輸出

			if (a==8)
			{
				printf("%d %d %d\n",i,j,k);
			}
		}
	}
		
	return 0;
}