題目描述:將1,2,…,9共9個數(shù)分成三組,分別組成三個三位數(shù),且使這三個三位數(shù)構(gòu)成1:2:3的比例,試求出所有滿足條件的三個三位數(shù)。
分析:由這9個數(shù)構(gòu)成的三位數(shù)最小為123,最大為987。所以遍歷范圍是123 ~ 987/3 = 329,每次取定最小的數(shù)后得到其2倍、3倍,將這三個數(shù)的每一位存到數(shù)組中,用排序保證每個數(shù)字只用一次。
C++代碼:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<vector>
#define ll long long
using namespace std;
#define inf 0x3f3f3f3f
int main()
{
int i,j,a[15];
bool ans;
for (i=123;i<=329;i++)
{
a[1]=i%10;
a[2]=i%100/10;
a[3]=i/100;
a[4]=2*i%10;
a[5]=2*i%100/10;
a[6]=2*i/100;
a[7]=3*i%10;
a[8]=3*i%100/10;
a[9]=3*i/100;
sort(a+1,a+10);
ans=true;
for (j=1;j<=9;j++)
if (a[j]!=j) //說明前面有數(shù)字出現(xiàn)次數(shù) > 1
ans=false;
if (ans) cout<<i<<" "<<i*2<<" "<<i*3<<endl;
}
return 0;
}