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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

1875 丢手绢

發布時間:2023/12/13 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 1875 丢手绢 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1875丟手絹

六一兒童節到了,小朋友們在玩丟手絹的游戲。總共有C個小朋友,編號從1到C,他們站成一個圈,第i(1<i<=C)個人的左邊是i-1,第1個人的左邊是C。第i(1<=i<C)個人的右邊是i+1,第C個人的右邊是1。然后再給出一個常數E。剛開始的時候1號小朋友拿著手絹,接下來游戲開始,在游戲的每一輪,拿手絹的人會把手絹向右邊傳遞E-1個人,拿到手絹的人退出圈,把手絹遞給他右邊的小朋友,剩下的人向中間挨緊,把圈中的空位補滿。然后開始下一輪,如此往復。直到圈中只剩一個人。比如C=6,E=5的時候,出圈的順序是5,4,6,2,3,最后1號小朋友留在了圈中。

現在有2G個小朋友,要求一個最小的常數E,使得這2G個小朋友玩了G輪游戲之后,出圈的小朋友編號剛好是G+1到2G。

Input

多組測試數據。
每一行給出一個整數G(0<G<14),G=0的時候表示輸入結束。

Output

輸出多行,表示每一組數據的答案。

Input示例

3
4
0

Output示例

5
30

此題我沒有發現任何技巧,所以我選擇打表
12,13跑了有半個小時還要多

 1 #include <cctype>
 2 #include <cstdio>
 3 
 4 const int MAXN=30;
 5 
 6 int n;
 7 
 8 int next[MAXN],from[MAXN],f[MAXN];
 9 
10 inline bool pd(int num,int x) {
11     for(int i=2;i<2*x;++i) next[i]=i+1,from[i]=i-1;
12     next[1]=2;from[1]=x*2;next[2*x]=1;from[x*2]=2*x-1;
13     int i=1,t=1,s=2*x;
14     while(s>x) {
15         if(t==num) {
16             if(i<=x) return false;
17             int p=from[i];
18             int nx=next[i];
19             next[p]=nx;from[nx]=p;
20             --s;
21             t=1;i=nx;
22         }
23         i=next[i];
24         ++t;
25     }
26     return true;
27 }
28 
29 int hh() {
30     f[1]=2;
31     for(int i=2;i<=14;++i) {
32         for(int j=i+1;;++j)
33           if(pd(j,i)) {f[i]=j;printf("%d ",f[i]);break;}
34     } 
35     for(int i=1;i<=14;++i) printf("%d ",f[i]);
36     return 0;
37 }
38 
39 int sb=hh();
40 int main(int argc,char**argv) {;}

打表程序

 1 #include <cctype>
 2 #include <cstdio>
 3 
 4 const int MAXN=14;
 5 
 6 int n;
 7 
 8 int f[MAXN]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};
 9 
10 int hh() {
11     while(scanf("%d",&n)) {
12         if(n==0) break;
13         printf("%d
",f[n]);
14     }
15     return 0;
16 }
17 
18 int sb=hh();
19 int main(int argc,char**argv) {;}

標程

總結

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

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