本文主要是介绍2012蓝桥杯初赛题2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
古堡算式福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把 ABCDE 所代表的数字写出来。 答案写在“解答.txt”中,不要写在这里!
分析:ABCDE都是一个数字,并且各不相同,这里,A!=0,E!=0,?!=0,其实就是枚举。O(10^6)常量级别,快速得出答案。
下面是代码:
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;int record[5];
bool compare(const int a,const int b){return a<b;
}int rever(int n){int temp=n;int ans=0,t=10000;int k=0;while(temp){record[k]=temp%10;ans+=record[k++]*t;t/=10;temp/=10;}return ans;
}
bool Is_dif(){sort(record,record+5,compare);for(int i=0;i<4;i++)if(record[i]==record[i+1])return false;return true;
}
int main(){int i,j,temp;for(i=10000;i<100000;i++){temp=rever(i);if(!Is_dif())continue;for(j=1;j<10;j++)if(i*j==temp)printf("%d\n",i);}return 0;
}
这篇关于2012蓝桥杯初赛题2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!