日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

循环圈

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 循环圈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

任意一個5位數,比如:34256,把它的各位數字打亂,重新排列,可以得到一個最大的數:65432,一個最小的數23456。求這兩個數字的差,得:41976,把這個數字再次重復上述過程(如果不足5位,則前邊補0)。如此往復,數字會落入某個循環圈(稱為數字黑洞)。

比如,剛才的數字會落入:[82962,75933, 63954, 61974] 這個循環圈。

?

請編寫程序,找到5位數所有可能的循環圈,并輸出,每個循環圈占1行。其中5位數全都相同則循環圈為 [0],這個可以不考慮。

?

循環圈的輸出格式仿照:

[82962, 75933, 63954, 61974]

#include <iostream> #include<cstring> #include<algorithm> using namespace std;int a[100]; int count1=0; int bj; int off(int n,int t)//t==0求最小值t==1求最大值 {int num[5];memset(num,0,sizeof(num));int k=0;while(n){num[k]=n%10;n=n/10;k++;}sort(num,num+5);int max=0,min=0;if(t==0)//返回最小值{min=num[4]+num[3]*10+num[2]*100+num[1]*1000+num[0]*10000;return min;}else//返回最大值{max=num[0]+num[1]*10+num[2]*100+num[3]*1000+num[4]*10000;return max;} } bool check(int ch)//檢查 {for(int i=0; i<count1; i++){if(a[i]==ch){bj=i;return true;}}return false; } void f(int n)//計算 {int max=off(n,1);int min=off(n,0);int ch=max-min;if(check(ch))return;else{a[count1]=ch;count1++;f(ch);}}int main() {int n;cin>>n;memset(a,0,sizeof(0));f(n);//輸出cout<<"[";for(int i=bj; i<count1; i++){cout<<a[i];if(i!=count1-1)cout<<",";}cout<<"]";cout<<endl;return 0; }

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的循环圈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。