组合三位数

 组合三位数(4分)
  题目内容:
  将1到9这九个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。
  输入格式:无
  输出格式: "%d,%d,%d\n" (注意:输出的顺序为第一个3位数,第二个3位数,第三个3位数)
  注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串:
  时间限制: 500ms  内存限制: 32000kb 

 

从最开始1000000000次循环 一直优化到200次循环大笑

(12月23日更新注释)

# include<stdio.h>
int judge(int n);
int a[10]={0};
int main()
{
	int i,j,z,n1,n2,n3,k;
	for(i=123;i<333;i++)
	{
		if(judge(i)&&judge(i*2)&&judge(i*3)) 
			printf("%d,%d,%d\n",i,i*2,i*3);
		for(k=0;k<10;k++)
			a[k]=0;
	}
}
int judge(int n)  //这个函数就是用来判断是否有重复的数出现,因为题中说的是1~9,每个数字只能出现一次。 
{                 // 用 233这个数来举例吧 
	a[n%10]++;    //a[]数组下表表示1~9,a[]数组中的值表示该数出现的次数。这个就是a[3]++,表示个位3出现的次数加一。 
	a[n/10%10]++; // 这个表示十位的 3,次数再加一。 
	a[n/100]++;   // 这个表示百位 2 , 加一。 
	if(a[n%10]>=2||a[n/10%10]>=2||a[n/100]>=2)  //这个判断,只要是该数出现了 两次及以上,那肯定就不符合了,返回0.
		return 0;
	return 1; 	
} 

 

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值