Esempio n. 1
0
int main(){

	printf("%s\n", "k=2");
	for(int i=1; i<9; i++){
		printf("%d\n", joseph(i, 2));
	}

	printf("%s\n", "k=3");
	printf("%d\n", joseph(15, 4));
	

	return 0;
}
int main(int argc,char *argv[])
{
    struct josepf *p1,*p2,*head,*tail;
    int  num,firstpasswd;
    int  i,id = 1;
    printf("请输入人数:");
    scanf("%d",&num);
    printf("请输入初始密码:");
    scanf("%d",&firstpasswd);
    p1 = (struct josepf *)malloc(LEN);
    head = p1;
    printf("请输入第1个人的密码:");
    scanf("%s",p1->passwd);
    p1->id = 1;
    for(i = 1;i < num;i++)
    {
        p2 = (struct josepf *)malloc(LEN);
        printf("请输入第%d个人的密码:",i+1);
        scanf("%s",p2->passwd);
        p2->id = i+1;
        p1->next = p2;
        p1 = p2;
    }
    p1->next = head;
    tail = p1;
    joseph(head,tail,firstpasswd);  
    return 0;
}
Esempio n. 3
0
long int joseph (long int n, long  int k)
{
	if (n==1)
		return 0;
	if (k == 1)
		return n-1;
	if (k>n){ puts("hello");
	return (joseph(n-1,k)+k)%n;}
	long int cnt =n/k;
	puts("hello3");
	long int res =joseph(n-cnt,k);
	res=res-(n%k);
	if (res <0){
		res+=n;puts("hello3");}
	else
		res+=res/(k-1);
	return res;
}
int main()
{
    int n = 0;
    printf("Please input the Length of the Circle list: ");
    scanf("%d", &n );
    int m = 0;
    printf("Please input the Stop point: ");
    scanf("%d", &m );
    Linklist pList;
    init_list( &pList );
    Create_List( &pList, n );
    Print_List( &pList );
    joseph( &pList, m );
    return 0;
}
int joseph(struct josepf *trans,struct josepf *tail,int passwd1)
{
    char passwd[20];
    int i;
    struct josepf *q,*p,*next,*s;
    if(passwd1 == 1)
    {
        s = trans->next;
        tail->next = s;
        strcpy(passwd,trans->passwd);
        printf("第%d个人出列(密码:%s)\n",trans->id,trans->passwd);
        free(trans);
        if(s->next != s)
        {
            joseph(s,tail,atoi(passwd));
        }
        else
            printf("第%d个人出列(密码:%s)\n",s->id,s->passwd);
    }
    else
    {
        for(i = 1,p = trans;i != passwd1;i++,p = p->next)
            q = p;
        next = p->next;
        strcpy(passwd,p->passwd);
        q->next = next;
        printf("第%d个人出列(密码:%s)\n",p->id,p->passwd);
        free(p);
        if(next->next != next)
        {
                joseph(next,q,atoi(passwd));
        }
        else
            printf("第%d个人出列(密码:%s)\n",next->id,next->passwd);
    }
}
Esempio n. 6
0
int main()
{
	LinkNode *list = NULL;
	int i;
	int n, base;
	
	scanf("%d%d", &n, &base);	
	list = creat_linknode(1);
	for(i = n; i > 1 ; i --)	
		insert_linklist(list, i);
	show_linklist(list);
	list = joseph(list, base);
	show_linklist(list);
	free_linklist(list);
	return 0;
}
Esempio n. 7
0
int main()
{
	long  int n,m,res;

	while(1)
	{
		puts("hello");
		scanf("%ld%ld",&n,&m);
		if(n==0 && m==0)
			break;
		puts("hello2");
		res=joseph(n,m)+1;
		printf("%ld %ld %ld\n",n,m,res);
	}
	return 0;
}
Esempio n. 8
0
int main(int argc, char** argv)
{
	/****	people (unrelated)	****/
	Person adam("Adam", male);
	Person eve("Eve", female);
	Person joan("Joan", female);
	Person george("George", male);
	Person joseph("Joseph", male);
	Person hillary("Hillary", female);

	/*****		2nd generation		*****/
	// Adam and Eve are parents of Abel, Martha, Mary, and Bill
	Person *pAbel = eve.addChild(new Person("Abel", male));
	adam.addChild(pAbel);

	Person *pMartha = eve.addChild(new Person("Martha", female));
	adam.addChild(pMartha);

	Person *pMary = eve.addChild(new Person("Mary", female));
	adam.addChild(pMary);

	Person *pBill = eve.addChild(new Person("Bill", male));
	adam.addChild(pBill);

	/*****		3nd generation		*****/
	// Joan Abel are parents of Missy
	Person *pMissy = joan.addChild("Missy", female);
	pAbel->addChild(pMissy);

	// George and Martha are parents of Jacky and Patsy
	Person *pJacky = george.addChild("Jacky", female);
	pMartha->addChild(pJacky);

	Person *pPatsy = george.addChild("Patsy", female);
	pMartha->addChild(pPatsy);

	// Mary and Joseph are parents of James
	Person *pJames = pMary->addChild("James", male);
	joseph.addChild(pJames);
	
	// Bill and Hillary are parents of Chelsea
	Person *pChelsea = pBill->addChild("Chelsea", female);
	hillary.addChild(pChelsea);
	
	/*****		Cousins		*****/
	pMissy->addCousin(pJacky);
	pMissy->addCousin(pPatsy);
	pMissy->addCousin(pJames);
	pMissy->addCousin(pChelsea);

	pJacky->addCousin(pMissy);
	pJacky->addCousin(pJames);
	pJacky->addCousin(pChelsea);

	pPatsy->addCousin(pMissy);
	pPatsy->addCousin(pJames);
	pPatsy->addCousin(pChelsea);

	pJames->addCousin(pMissy);
	pJames->addCousin(pJacky);
	pJames->addCousin(pPatsy);
	pJames->addCousin(pChelsea);

	pChelsea->addCousin(pMissy);
	pChelsea->addCousin(pJacky);
	pChelsea->addCousin(pPatsy);
	pChelsea->addCousin(pJames);

	// output all the people in the tree

	/*
	std::cout << "\nAll the people in the tree:\n\n";
	std::cout << adam << eve;
	std::cout << *pAbel << joan << george << *pMartha << *pMary << joseph << *pBill << hillary;
	std::cout << *pMissy << *pJacky << *pPatsy << *pJames << *pChelsea << "\n";
	*/

	std::cout << "\n\t********    Cousins    ********\n";
//	std::cout << "\n\t****    Parents and Cousins    ****\n";

//	pMissy->showParents(pMissy);
	pMissy->getCousins(pMissy);

//	pJacky->showParents(pJacky);
	pJacky->getCousins(pJacky);

//	pPatsy->showParents(pPatsy);
	pPatsy->getCousins(pPatsy);

//	pJames->showParents(pJames);
	pJames->getCousins(pJames);

//	pChelsea->showParents(pChelsea);
	pChelsea->getCousins(pChelsea);

	std::cout << "\n\n";
	return 0;
}
Esempio n. 9
0
File: temp.cpp Progetto: 199911/acm
int joseph(int n, int k){   // O(klogn)
	if(n<=1)return 0;
	if(k==1)return n-1;  // this line of code can be handled by caller
	int x=(n+k-1)/k;
	return (x*k+(joseph(n-x,k)*k+gm(x-n,k-1))/(k-1)+(x*k==n+k-1))%n;
}
Esempio n. 10
0
int main(int argc, char *argv[])
{
	printf("%d\n", joseph(5, 3));
	return 0;
}