古堡算式

福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:


    ABCDE * ? = EDCBA


    他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”


    华生:“我猜也是!”


    于是,两人沉默了好久,还是没有算出合适的结果来。


    请你利用计算机的优势,找到破解的答案。


    把 ABCDE 所代表的数字写出来。


    答案写在“解答.txt”中,不要写在这里


思路:1穷举,数都不一样,全排列的思想

思路2:从10000 ~ 99999找合适的

代码:

#include<stdio.h>
//int mark[10];
int num[10];
int judge(int a){
	int i, b = 0;
	for(i = 0; i <= 4; i++){//将逆置的每一位相加
		b = b * 10 + num[i];
	}
	if(b % a == 0)
		return 1;
	return 0;
}
int main()
{
	//freopen("2.txt", "w", stdout);
	int a, i, j, k, flag;
	for(i = 10000; i <= 99999; i++){
		a = i;
		flag = 0;
		for(j = 0; j < 5; j++){
			num[j] = a % 10;//取个位
			a = a / 10;//去掉个位,去前面的
			for(k = 0; k < j; k++){
				if(num[k] == num[j]){//数字都是不能重复的
					flag = 1;
					break;
				}
			}//for
			if(flag == 1){//跳出二重循环
				break;
			}
		}//for
		if(flag == 1)
			continue;
		else{//说明每一位都是不重复的
			if(judge(i))
				printf("%d\n",i);
		}
	
	}//for
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值