PTA:7-16会う与えられた条件の中で整数の集合要件(15分)

  A.から始まる4つの連続した数字を取って、任意の正整数A 6を超えません それらからなる繰り返しなしすべての3桁の数字の出力してください。

入力フォーマット:
  行Aに与えられた入力

出力フォーマット:
  小から大までに必要な条件を満たしている3桁の出力、6つの整数の各行。整数の間のスペースで区切られますが、行の最後には、余分なスペースを持つことができません。

サンプル入力:
2

出力サンプル:
234 235,243,245,253,254
324 325,342,345,352,354
423 425,432,435,452,453
523 524,532,534,542,543

暴力ソリューション:

#include <stdio.h>

int main()
{
	int A;
	scanf("%d", &A);
	int a=A;
	int b=A+1;
	int c=A+2;
	int d=A+3;
	printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",a,b,c,a,b,d,a,c,b,a,c,d,a,d,b,a,d,c);
	printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",b,a,c,b,a,d,b,c,a,b,c,d,b,d,a,b,d,c);
	printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",c,a,b,c,a,d,c,b,a,c,b,d,c,d,a,c,d,b);
	printf("%d%d%d %d%d%d %d%d%d %d%d%d %d%d%d %d%d%d\n",d,a,b,d,a,c,d,b,a,d,b,c,d,c,a,d,c,b);
	return 0;
}

別の解決策:

#include <stdio.h>

int main()
{
	int a,i,j,k;
	scanf("%d", &a);
	int cnt = 0;
	
	for (i=a;i<=a+3;i++)
	{
		for (j=a;j<=a+3;j++)
		{
			for (k=a;k<=a+3;k++)
			{
				if (i!=j && i!=k && j!=k)
				{
					printf("%d", 100*i+10*j+k);
//由于这里不涉及0,因此也可以printf("%d%d%d", i, j, k);
					cnt++;
					if (cnt%6 == 0)
					{
						printf("\n");
					}
					else 
					{
						printf(" ");
					}
				}
			}
		}
	}
	
	return 0;
}
公開された46元の記事 ウォン称賛84 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_43871127/article/details/104283210