数字0到9的奇妙变幻(填表格)

/**************************************** 
*  File Name  : figure.c 
*  Creat Data : 2015.1.28
*  Author     : ZY 
*****************************************/ 

/*数字0到9的奇妙变幻*/
/*填表格*/
/*将1,2,3,4,5和6填入下表中,要使的每一列右边的数字比
左边的数字大,每一行下面的数字比上面的数字大,按此要
求,可有几种填写方法?
2*3表格*/


#include <stdio.h>
int main(void)
{
	int count = 0;
	int a[6];
	a[0] = 1;
	a[5] = 6;
	printf("The possible table satisfied above conditions are:\n");
	for(a[1]= 2;a[1] < 6;a[1]++)
	{
		for(a[2] = 2;a[2] < 6;a[2]++)
		{
			for(a[3] = 2;a[3] < 6;a[3]++)
			{
				for(a[4] = 2;a[4] < 6;a[4]++)
				{
					if((a[1]!=a[2])&&(a[1]!=a[3])
						&&(a[1]!=a[4])&&(a[2]!=a[3])
						&&(a[2]!=a[4])&&(a[3]!=a[4])
						&&(a[1]<a[2])&&(a[3]<a[4])
						&&(a[1]<a[4]))
					{
						printf("No.:%d \n",++count);
						printf("%d%d%d\n%d%d%d\n",a[0],a[1],a[2],a[3],a[4],a[5]);
					}
				}
			}
		}
	}
	return 0;	
}





/*将1到9这九个数字分成三个3位数,要求第一个3位数,
正好是第二个3位数的二倍,是第三个3位数的三倍。问
应当怎么分法?*/

#include <stdio.h>
int a[9];
int ok(int t,int *z)//分解t的值,将其存入z指向的三个数组元素,若满足返回1
{
	int *p1,*p2;
	for(p1 = z;p1 < z+3;p1++)
	{
		*p1 = t%10;//分解整数
		t /= 10;
		for(p2 = a;p2 < p1;p2++)//查询分解出来的数字是否已经出现
		{
			if(0 == *p1||*p2 == *p1)//若重复返回0
			{
				return 0;
			}
		}
	}
	return 1;//否则返回1
}

int main(void)
{
	int m,count = 0;
	for(m = 123;m < 334;m++)//试探可能的三位数
	{
		if(ok(m,a)&&ok(2*m,a+3)&&ok(3*m,a+6))//若满足题意,输出结果
		{
			printf("No.%d:%d %d %d\n",++count,m,2*m,3*m);	
		}
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值