多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 求解黑洞數

求解黑洞數

來源:程序員人生   發布時間:2015-07-08 07:58:18 閱讀次數:3594次

問題描寫:

黑洞數又稱圈套數,是類具有奇特轉換特性的整數。任何1個數字不全相同的整數, 經有限“重排求差”操作,總會得到某1個或1些數,這些數即為黑洞數。 “重排求差”操作即把組成該數的數字重排后得到的最大數減去重排后得到的最小數。 舉個例子,3位數的黑洞數為495. 簡易推導進程:隨意找個數,如297,3個位上的數從小到大和從大到小各排1次, 為972和279,相減得693。按上面做法再做1次,得到594,再做1次,得到495, 以后反復都得到495。 驗證4位數的黑洞數為6174。
解題思路:


#include<stdio.h> #include<iostream> #include<stdlib.h> using namespace std; #define LENTH 100 /* 降序:冒泡排序 */ void dec_sort(int array[],int n) { int flag = 0; for(int i=0;i<n⑴;++i)//n⑴趟排序 { for(int j=0;j<n-i⑴;++j)//第i趟比較n-i次,由于i從0開始,所以還得⑴ { if(array[j] < array[j+1]) { array[j] += array[j+1];//array[j] = array[j] + array[j+1] array[j+1] = array[j] - array[j+1]; array[j] -= array[j+1];//array[j] = array[j] - array[j+1] flag = 1; } } if(flag == 0)//在1趟排序中若未產生交換,表明已排序好,退出程序 break; } } /* 升序:選擇排序 */ void inc_sort(int array[],int n) { int k; for(int i=0;i<n⑴;++i)//n個數,將前n⑴個數放置好就結束了 { k = i;//假定要排序的1組數據中第1個數最小(k寄存待排序數據中最小值的下標) for(int j=k+1;j<n;++j) { if(array[j] < array[k])//若存在比當前值還小的數,則交換下標 { k = j; } } if(k != i) { array[i] += array[k]; array[k] = array[i] - array[k]; array[i] -= array[k]; } } } int black_hole_num(int n) { cout<<n<<endl; //注意:!!!求解進程中會改變n的值,而下面要用到n,不想它改變 //所以用臨時變量保存他的值,改變臨時變量,而不改變它 int temp = n; int array[LENTH]; int i = 0; int count; int max = 0; int min = 0; /* 將該數值的各個位寄存在數組中 */ while(temp) { array[i] = temp%10; i++; temp /= 10; } count = i; /* 元素升序以后,求解最小值*/ inc_sort(array,count); for(i=0;i<count;++i) { min = min*10 + array[i]; } /* 元素降序以后,求解最大值*/ dec_sort(array,count); for(i=0;i<count;++i) { max = max*10 + array[i]; } /* if(max - min == n)//此處要用到n的值,所以改變臨時變量而不改變n return n; else return black_hole_num(max - min);*/ return (max - min == n) ? n:black_hole_num(max - min); } int main() { int flag = 1; int n; int num; system("mode con cols=100 lines=100"); system("color 0A"); while(flag) { cout<<"----------求解黑洞數-------------"<<endl; cout<<" zyh_helen"<<endl; cout<<"請輸入您要求的黑洞數的位數:"<<endl; cin>>n; cout<<"請輸入"<<n<<"個:任何1個數字不全相同的整數"<<endl; cin>>num; cout<<"黑洞數為:"<<black_hole_num(num)<<endl; cout<<"continue:1 break:0"<<endl; cin>>flag; } return 0; }


當輸入5的時候,會墮入[82962,75933,63954,61974]循環圈中


<span style="color:#ff0000;">任何1個數字不全相同的整數, 經有限“重排求差”操作,總會得到某1個或</span><span style="color:#3333ff;">1些數</span><span style="color:#ff0000;">,這些數即為黑洞數。</span>


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线观看视频免费入口 | 久久综合九色 | 日本欧美一区二区三区在线观看 | 色聚网久久综合 | 国产视频一区二区在线观看 | 成人a视频在线观看 | 番号网在线 | www在线视频 | 亚洲日本1区2区3区二区 | 69视频最新在线观看 | 亚洲影视先锋 | 亚洲www在线 | 久久免费毛片 | 一区二区三区四区视频在线观看 | 波多野结衣在线观看一区 | 曰本裸色私人影院噜噜噜影院 | 一级女性全黄生活片免费看 | 欧美性高清极品猛交 | 亚洲小说另类 | 日本欧美久久久久免费播放网 | 亚洲成人网页 | 成人精品人成网站 | 国产亚洲精品成人一区看片 | 国产欧美二区三区 | 国产精品亚洲欧美大片在线看 | 久久精品亚洲精品一区 | 成年人在线观看视频免费 | 国产美女精品三级在线观看 | 日本精品久久久久护士 | 国产美女视频一区二区二三区 | 韩国春性xxxx猛交 | 久久精品伊人网 | 免费在线网站 | 欧美成人在线视频 | 婷婷激情五月 | 波多野结衣一区免费作品 | 欧美网站在线看 | 欧美日韩精品免费一区二区三区 | 动漫精品在线 | 7777精品伊人久久久大香线蕉 | 欧美日韩国产亚洲人成 |