小鑫与小伙伴

题目描述

这天,小鑫决定与他的小伙伴们玩一个游戏。
游戏规则是这样的:他们将会按照随机顺序围坐成一个圈,顺时针从1开始依次编号。之后从1号开始沿顺时针报数。当数到第m个人时那个人就要退出游戏。这样进行下去一直到最后只剩下一个人。它就是胜利者。
如果告诉你小鑫朋友的数量n,小鑫的编号x,你能告诉我小鑫赢得游戏了么?

输入

输入数据为多组,到文件结束。
每一组数据有一行,三个数,n、m、x。数据小于200

输出

当小鑫赢得胜利输出“Yes”,否则输出“No”

示例输入

2 2 1
2 2 2

示例输出

Yes
No
 
 

#include <iostream> #include <cstdlib> using namespace std; struct node {     int num;     struct node *next; }; int main() {     int i,m,n,k,j,l,x;     while(cin>>n>>m>>x)     {         int coun=0;         int nu=0;         struct node *head,*tail,*p;         p=(struct node *)malloc(sizeof(struct node));         p->num=1;p->next=NULL;         head=p;         tail=p;         for(i=2;i<=n;i++)         {             p=(struct node *)malloc(sizeof(struct node));             p->num=i;             tail->next=p;             tail=p;             p->next=NULL;         }         tail->next=head;         struct node *u,*v;         u=head;         while(u->next!=head)             u=u->next;         while(coun<n-1)         {             v=u->next;             nu++;             if(nu%m==0)             {                 u->next=v->next;                 free(v);                 coun++;             }             else                 u=v;         }        if(u->num==x) cout<<"Yes"<<endl;        else cout<<"No"<<endl;

    } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值