蓝桥杯 算法提高 寻找三位数【C语言】---Q君

将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数。

例如:三个三位数192,384,576满足以上条件。

代码如下:

#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    for(a=123;a<=329;a++)//由于成比例,所以小于999/3即可;又因为数字不同(329)
	{
        int count,i,x[10]={0};
        b=2*a;c=3*a;
		d=a;e=b;f=c;
		//每位数存入数组,数组自加1;
		while(d)
		{
			x[d%10]++;
			d/=10;
		}
		while(e)
		{
			x[e%10]++;
			e/=10;
		}
		while(f)
		{
			x[f%10]++;
			f/=10;
		}
        count=1;
        //易错,从1下标开始
        for(i=1;i<=9;i++)
            if(x[i]!=1)
			{
                count=0;
                break;
            }
        if(count) 
			printf("%d %d %d\n",a,b,c);
    }
    return 0;
}

数学好的朋友们也可(嘿嘿):

#include<stdio.h>
int main()
{
    printf("192 384 576");
    printf("219 438 657");
    printf("273 546 819");
    printf("327 654 981");
    return 0;
}
发布了3 篇原创文章 · 获赞 2 · 访问量 52

猜你喜欢

转载自blog.csdn.net/weixin_43614987/article/details/104410245