模板题-六一儿童节-51nod1875

六一儿童节到了,小朋友们在玩丢手绢的游戏。总共有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。

#include<cstdio>
#include<iostream>
using namespace std;  

int n,ans[14]={0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881};  

int main()
{
    while(scanf("%d",&n) && n) printf("%d\n",ans[n]);
}  

精妙的程序,一开始我用具体数学的公式推了半天,后来发现不如打表,虽然慢的要死,我都洗了个澡。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int g,Next[250000],Pre[250000],c;
int main()
{
    scanf("%d",&g);
    c=2;

    while(1)
    {
        //printf("%d\n",c);
        Next[0]=1;
        for(int i=1;i<=2*g;i++)
        Next[i]=i+1,Pre[i]=i-1;
        Next[2*g]=1,Pre[1]=2*g;
        bool flag=0;
        int num=0;
        int pos=0;
        while(num<g)
        {
            int step=c;
            for(int pp=1;pp<=step;pos=Next[pos],++pp);
            if(pos<=g)
            {
                flag=1;
                break;
            }
            num++;
            Next[Pre[pos]]=Next[pos];
            Pre[Next[pos]]=Pre[pos];

        }
        if(flag)
        {
            c++;
            continue;
        }
        break;
    }
    cout<<c<<endl;
}
时间: 2024-11-08 21:07:45

模板题-六一儿童节-51nod1875的相关文章

hdu 2966 In case of failure kdtree模板题

问求每个点距离平方的最小的点 kd-tree模板题…… 1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(x) cerr<<#x<<"=="<<(x)<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int>

几道树剖模板题

寒假后半段一直都在外出旅游..颓了好久..qaq 旅游期间写了几道树剖模板题,贴上来.. BZOJ 1036 没啥好说的,裸题 1 #include <cstdio> 2 #include <algorithm> 3 4 #define LEFT (segt[cur].l) 5 #define RIGHT (segt[cur].r) 6 #define MID (segt[cur].mid) 7 #define SUM (segt[cur].Sum) 8 #define MAX (

poj3630 Phone List (trie树模板题)

Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26328   Accepted: 7938 Description Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let's say the phone catalogu

你知道六一儿童节起源于希特勒制造的大屠杀吗?

?    ?六一国际儿童节是为了保障世界各国儿童的生存权,保健权和受教育权,抚养权.为了改善儿童的生活,为了反对虐杀儿童和毒害儿童而设立的节日.目前世界上许多国家都将6月1日定为儿童的节日.    ? ?    ?1950年3月30日,中国教育部发出通告,规定6月1日为儿童节,废除旧的"四四"儿童节,并规定少年儿童放假一天.这天,各小学的师生都会进行庆祝.而很少有人知道,这个欢乐的节日却来源于德国法西斯制造的捷克利迪策村大惨案. ?    ?捷克的利迪策村距首都布拉格20公里.1939

HUST 1017 - Exact cover (Dancing Links 模板题)

1017 - Exact cover 时间限制:15秒 内存限制:128兆 自定评测 5584 次提交 2975 次通过 题目描述 There is an N*M matrix with only 0s and 1s, (1 <= N,M <= 1000). An exact cover is a selection of rows such that every column has a 1 in exactly one of the selected rows. Try to find o

洛谷P3381——费用流模板题

嗯..随便刷了一道费用流的模板题....来练练手. #include<iostream> #include<cstdio> #include<cstring> using namespace std; int h[5210],d[5210],used[5210],que[100010],last[5210]; int k=1,INF=0x7fffffff,ans1=0,ans2=0; inline int read(){ int t=1,num=0; char c=ge

HDU 1251 Trie树模板题

1.HDU 1251 统计难题  Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm> #include<cstdio> #define max(a,b) a>b?a:b #define F(i,a,b

LA 4670 出现次数最多的子串 (AC自动机模板题)

Dominating Patterns Time Limit:3000MS   Memory Limit:Unknown   64bit IO Format:%lld & %llu [Submit]  [Go Back]  [Status] Description The archaeologists are going to decipher a very mysterious ``language". Now, they know many language patterns; ea

【POJ 2104】 K-th Number 主席树模板题

达神主席树讲解传送门:http://blog.csdn.net/dad3zz/article/details/50638026 2016-02-23:真的是模板题诶,主席树模板水过.今天新校网不好,没有评测,但我立下flag这个代码一定能A.我的同学在自习课上考语文,然而机房党都跑到机房来避难了\(^o^)/~ #include<cstdio> #include<cstring> #include<algorithm> #define for1(i,a,n) for(i