本文共 1216 字,大约阅读时间需要 4 分钟。
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。比如:766431 - 134667 = 631764 就是具有这样特征的数字。
你还能找到另一个这样的6位数吗?
请填写它重新排列数位后得到的最大数。
输入没有输入。
输出输出一个整数。
提示用printf或cout输出答案。
暴力枚举即可,枚举出所有类型,看是否符合题目要求。
代码:
#include#include #include using namespace std;int process(int a[6]){ int i; sort(a,a+6); int lift1 = a[5]*100000+a[4]*10000+a[3]*1000+a[2]*100+a[1]*10+a[0]; int lift2 = a[0]*100000+a[1]*10000+a[2]*1000+a[3]*100+a[4]*10+a[5]; int right = lift1 - lift2; int b[6]; i=0; while(right) { b[i]=right%10; right/=10; i++; } sort(b,b+6); int flag = 1; for(i=0;i<6;i++) { if(a[i]!=b[i]) { flag=0; break; } } if(flag == 1 && lift1!=766431) { printf("%d\n",lift1); return 1; } return 0;}int main (){ int a[6]; int i,j,k,l,n,m; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { for(k=1;k<=9;k++) { for(l=1;l<=9;l++) { for(n=1;n<=9;n++) { for(m=1;m<=9;m++) { a[0]=i; a[1]=j; a[2]=k; a[3]=l; a[4]=n; a[5]=m; if(process(a)==1) return 0; } } } } } } return 0; }
答案:995544
转载地址:http://rprzi.baihongyu.com/