求C语言大神
题目标题:大小之差某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰...
题目标题: 大小之差
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。
比如:766431 - 134667 = 631764 就是具有这样特征的数字。
你还能找到另一个这样的6位数吗?
请填写它重新排列数位后得到的最大数:________________
请通过浏览器提交答案。
注意:只提交另一个6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。 展开
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。
比如:766431 - 134667 = 631764 就是具有这样特征的数字。
你还能找到另一个这样的6位数吗?
请填写它重新排列数位后得到的最大数:________________
请通过浏览器提交答案。
注意:只提交另一个6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。 展开
3个回答
展开全部
269631
279351
294741
296361
299961
318681
318951
335871
368181
好多啊...
写了个shell script算,效率太低
279351
294741
296361
299961
318681
318951
335871
368181
好多啊...
写了个shell script算,效率太低
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
由下面程序可直接运行出结果:
显示只有两组值:
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;
}
显示只有两组值:
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询