求C语言大神

题目标题:大小之差某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰... 题目标题: 大小之差
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。
比如:766431 - 134667 = 631764 就是具有这样特征的数字。

你还能找到另一个这样的6位数吗?

请填写它重新排列数位后得到的最大数:________________

请通过浏览器提交答案。
注意:只提交另一个6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。
展开
 我来答
百度网友c3bd8dc
2013-12-15
知道答主
回答量:25
采纳率:0%
帮助的人:12.3万
展开全部
满足这样要求的数(这里只考虑排列组合后的最大值)只有三组:
第一组
max=995544
min=445599
max-min=549945

第二组
max=955554
min=455559
max-min=499995

第三组(题干已给出)
max=766431
min=134667
max-min=631764
追问
大神,能麻烦你写一下代码吗?
追答

没注释,不知道你看得懂不?

之前审题不清,还以为只要互相包含就行了,之前我说的第二组应该不满足要求。一个是四个5,一个是四个9。

videlord
2013-12-15 · TA获得超过1336个赞
知道大有可为答主
回答量:1518
采纳率:66%
帮助的人:399万
展开全部
269631

279351
294741
296361

299961
318681
318951
335871
368181
好多啊...
写了个shell script算,效率太低
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张万水张万水
2013-12-15 · TA获得超过245个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:187万
展开全部
由下面程序可直接运行出结果:
显示只有两组值:
max:766431,min:134667,result:631764
max:995544,min:445599,result:549945

//主方法调用函数

findNumber6(digital);
//方法体
/**
* 某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
*该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,
*并且它恰好包含了组成原6位数同样的数字。
* @param digital
*/
private static void findNumber6(int digital) {
// TODO Auto-generated method stub
long Min = (long) Math.pow(10, digital-1);
long Max = (long) Math.pow(10, digital);
for(long i=Min;i<Max;i++){
if(!isHas0(i)){
long min = min(i);
long max = max(i);
long result = max - min;
if(isExist(result,i)){
System.out.println("max:"+max+",min:"+min+",result:"+result);
}
}
}
}
/**
* 判断result是否和i包含数字内容相同
* @param result
* @param i
* @return
*/
private static boolean isExist(long result,long i) {
// TODO Auto-generated method stub
boolean state = true;
String str1 = String.valueOf(result);
String str2 = String.valueOf(i);
char[] tmp1 = str1.toCharArray();
char[] tmp2 = str2.toCharArray();
Arrays.sort(tmp1);
Arrays.sort(tmp2);
for(int flag=0;flag<tmp1.length;flag++){
if(!(tmp1[flag] == tmp2[flag])){
state = false;
break;
}

}
return state;
}
/**
* 返回i重组后最大值
* @param i
* @return
*/
private static long max(long flag) {
// TODO Auto-generated method stub
String tmp = String.valueOf(flag);
char[] num = tmp.toCharArray();
Arrays.sort(num);
StringBuffer result = new StringBuffer("");
for(int i=num.length-1;i>=0;i--){
result.append(num[i]);
}
return Long.parseLong(result.toString());
}
/**
* 返回flag重组后最小值
* @param flag
* @return
*/
private static long min(long flag) {
// TODO Auto-generated method stub
String tmp = String.valueOf(flag);
char[] num = tmp.toCharArray();
Arrays.sort(num);
StringBuffer result = new StringBuffer("");
for(int i=0;i<num.length;i++){
result.append(num[i]);
}
return Long.parseLong(result.toString());
}
/**
* 判断flag是否包含0
* @param flag
* @return
*/
private static boolean isHas0(long flag) {
// TODO Auto-generated method stub
boolean state = false;
String tmp = String.valueOf(flag);
char[] num = tmp.toCharArray();
for(int i=0;i<num.length;i++){
if('0' == num[i]){
state = true;
break;
}
}
return state;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式