本文主要是介绍大小之差 (2013年11月24日 蓝桥杯校内选拔赛c\c++B组),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目标题: 大小之差
某6位数,只包含1~9中的某些数字(可以重复包含同一数字,但不含数字0)。
该数字重新排列数位后,可以得到最大数和最小数。最大最小之差也是6位数,并且它恰好包含了组成原6位数同样的数字。
比如:766431- 134667 = 631764 就是具有这样特征的数字。
你还能找到另一个这样的6位数吗?
请填写它重新排列数位后得到的最大数:___995544_____________
请通过浏览器提交答案。
注意:只提交另一个6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。
#include "iostream.h"
#include <stdlib.h>
#include <ctime>
int comper(const void *a, const void *b)
{return *(int *)a - *(int *)b;
}//comper 从小到大排
void shuzu(int m, int &max, int &min)
{ int k = 0;int a[6] = {0};for(k = 0; k < 6; k++) {a[k] = m%10;m = m/10;if(a[k] == 0) break; // 进入i+1}//for 将数字变成数组qsort(a, 6, sizeof(int), comper); //排序int p = 1;for( k = 0; k < 6; k++) {max += a[k]*p; min += a[5-k]*p;p *= 10;}//for 将数组变为数字}//shuzu
int main()
{clock_t start, finish;double totaltime;start = clock();int max = 0, min = 0, m = 0, flag = 100, j = 0;int s[1000] = {0};for(int i = 111111; i <= 999999; i++) {max = 0; min = 0;shuzu(i, max, min);if(max%10 == 0)continue;m = max - min;int max1=0,min1=0;shuzu(m, max1, min1);if(min1 == min){s[j++] = max;for(int k = 0; k < j-1; k++){if(s[j-1] == s[k]) { // 《 j-1 去掉自己s[j-1] = 0;j--;}}//for//cout << max << endl;}//if}//forfor(int k = 0; k < j; k++){cout << s[k] <<endl;}//forfinish = clock();totaltime = (double)(finish-start);cout<<totaltime<<endl;return 0;
}//main
这篇关于大小之差 (2013年11月24日 蓝桥杯校内选拔赛c\c++B组)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!