問題羅区--P1008三連勝単式の水問題の解決

問題への羅区ソリューション--P1008

タイトル説明

1,2、⋯、各々が3桁3および3からなる3つの群に分けの9 99の合計数がので、これらのことを構成する3桁の数:2:3の比率は、3つのすべてを取得するために試験の条件を満足します3桁の数字。

入力形式
木材入力

出力フォーマット
3つの数字のいくつかの行。各行は、番号順に配置されています。

コード

#include<cstdio>
#include<cstring>
int i,j,v;
bool a[10];//ai表示第i个数已经用过了 
int main()
{
	for(i=123;i<=329;++i)//第一个数的范围,也可以写成100-333
	{
		memset(a,0,sizeof(a));
		v=0;
		a[i%10]=a[i/10%10]=a[i/100]=1;
		a[i*2%10]=a[i*2/10%10]=a[i*2/100]=1;
		a[i*3%10]=a[i*3/10%10]=a[i*3/100]=1;
		//如果没有那个数字,那么对应的a就为0
		for(j=1;j<=9;j++)//看看1-9是否都有了 
		{
			v+=a[j];
		}
		if(v==9) printf("%d %d %d\n",i,i*2,i*3);
	}
	return 0;
 } 

別の考え:AとセットはセットAとBの組の数に等しいとセットBの数は、ディジタル乗算に等しい数の和、集合Aは、Bの要素に等しいです。

#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;
}

もう一つのアイデア:

# include<stdio.h>

int main()
{
	int b, c, a[10], flag=0;
	for (int i = 100; i <= 333; i++)//第一个数的范围
	{
		b = i * 2; c = i * 3;
		//a中存储的是对应的数字
		a[0] = i / 100 % 10; a[1] = i / 10 % 10; a[2] = i % 10;
		a[3] = b / 100 % 10; a[4] = b / 10 % 10; a[5] = b % 10;
		a[6] = c / 100 % 10; a[7] = c / 10 % 10; a[8] = c % 10;
		for (int j = 0; j < 9; j++)//用标记看是否有两个数字相等
		{
			for (int k = j + 1; k < 9; k++)
			{
				if (a[j] == a[k]||a[j]==0||a[k]==0)flag = 1;
			}
		}
		if (flag == 0)printf("%d %d %d\n", i, b, c); 
		flag = 0;
	}
}

公開された46元の記事 ウォン称賛24 ビュー2037

おすすめ

転載: blog.csdn.net/weixin_43946347/article/details/104076135