题目背景
本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。
题目描述
将 1, 2, \ldots , 91,2,…,9 共 99 个数分成 33 组,分别组成 33 个三位数,且使这 33 个三位数构成 1 : 2 : 31:2:3 的比例,试求出所有满足条件的 33 个三位数。
输入格式
无
输出格式
若干行,每行 33 个数字。按照每行第 11 个数字升序排列。
方法一:将i,2i,3i百分位,十分位,个位存储在数组中数存中,遍历数组查找是否有相同元素和位数为0的情况
#include<iostream>
#include<algorithm>
using namespace std;
int A[10];
int main()
{
int flag = true;
for(int i = 100;i < 333;++i)
{
flag = true;
for(int j = 1;j <= 3;++j)
{
A[1+(j-1) * 3] = j*i/100%10;
A[2+(j-1) * 3] = j*i/10%10;
A[3+(j-1) * 3] = j*i%10;
}
for(int i = 1;i < 10;++i)
{
for(int j = i+1;j < 10;++j)
if(A[i]==A[j]||A[i]==0)
{
flag = false;
break;
}
if(!flag)
{
break;
}
}
if(flag)
cout << i << " " << 2*i << " " << 3*i << endl;
}
return 0;
}
方法二:
#include <stdio.h>
int main()
{
int a,b,c;
for(a=123;a<=333;a++)
{
b=a*2;
c=a*3;
if((a/100+a/10%10+a%10+b/100+b/10%10+b%10+c/100+c/10%10+c%10==1+2+3+4+5+6+7+8+9)&&((a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==(1)*(2)*(3)*(4)*(5)*(6)*(7)*(8)*(9)))
printf("%d %d %d\n",a,b,c);
}
return 0;
}