本人萌新,只会用C
本题思路是:1.按1:2:3的比例对这三个数进行区间划分 [123,329] [246,658] [369,987]
2.找到符合比例的三位数分解各位 并判断数字是否重复出现 (这个地方应该是导致超时的原因,该怎么优化)
#include<stdio.h>
int main()
{
int b[1000]={0};
int c[1000]={0};//存放三位数
int A[3],B[3],C[3];//放各个数位
int i,j=0;
for(i=246;i<=658;i++)
{
b[j]=i;
j++;
}
j=0;
for(i=369;i<=987;i++)
{
c[j]=i;
j++;
}//放在规定区间内
j=0;
int x,y,z;
for(i=123;i<=329;i++)//第一个数
{
for(j=0;j<1000;x++)//遍历数组找到比例符合的数
{
if(b[j]==i*2&&c[j]==i*3)//判断是否有重复数字
{
A[0]=i%10;
A[1]=i/10%10;
A[2]=i/10/10%10;
B[0]=b[j]%10;
B[1]=b[j]/10%10;
B[2]=b[j]/10/10%10;
C[0]=c[j]%10;
C[1]=c[j]/10%10;
C[2]=c[j]/10/10%10;//分解个位十位百位
int count=0;
for(x=0;x<3;x++)
{
for(y=0;y<3;y++)
{
for(j=0;j<3;j++)
{
if(A[x]==B[y]||A[x]==C[z]||B[y]==C[z])
count++;//判断是否重复
}
}
}
if(count==0)
printf("%d %d %d",i,b[j],c[j]);
}
}
}
}