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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu 1443 Joseph

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

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1443

先把神級代碼雙手奉上....雖然看不懂吧...囧

1 #include<stdio.h> 2 3 int ans[14]={0}; 4 5 int joseph(int k) 6 { 7 int cnt,p; 8 if(ans[k])return ans[k]; 9 for(int i=k+1;;i++) 10 { 11 for(cnt=k<<1,p=0;cnt>k;cnt--) 12 { 13 p=(p+i-1)%cnt; 14 if(p<k)cnt=0; 15 } 16 if(cnt==k) 17 { 18 ans[k]=i; 19 return i; 20 } 21 } 22 return 0; 23 } 24 25 int main() 26 { 27 int n; 28 while(scanf("%d",&n),n) 29 { 30 printf("%d\n",joseph(n)); 31 } 32 return 0; 33 }


再把神奇代碼奉上...打表

?

1 #include<stdio.h> 2 3 int main(){ 4 int n,a[14]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881}; 5 while(scanf("%d",&n)&&n) 6 printf("%d\n",a[n]); 7 return 0; 8 }

?

再說這幾個數是怎么來的.....

#include<iostream> using namespace std; typedef struct joseph { int next; int pre; int cur; }joseph; int main() {int k,m,count,total,i,j,rec1,rec2,a[14];joseph p[30];count=0;for(j=1;j<=13;j++){for(m=2;count!=j*2;m++){for(i=0;i<2*j;i++){p[i].cur=i;p[i].next=i+1;p[i].pre=i-1;}p[2*j-1].next=p[0].cur;p[0].pre=p[2*j-1].cur; //將每個人連成環count=0;rec1=0;total=2*j;do{for(i=1;i<=(m-1)%total;i++){rec1=p[rec1].next;} //一個一個往后移動,直到不能再移動了 rec2=p[rec1].next;p[p[rec1].pre].next=rec2;p[rec2].pre=p[rec1].pre; //刪除需要出圈者if(p[rec1].cur>=0 && p[rec1].cur<j) //出圈了好人,跳出該m值的循環 {break;}else{rec1=rec2;count++; //出圈一個壞人計數器加1 }total--; //出圈一人后總人數記得減一}while(count!=j);if(count==j) //出圈好人前出圈完K個壞人,滿足條件 {a[j]=m;break;}}}while(cin>>k && k){cout<<a[k]<<endl;}return 0; }


這代碼竟然沒超時T_T.....

轉載于:https://www.cnblogs.com/xurenwen/p/3875022.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

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

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