欧几里得小游戏

来源:互联网 发布:json.parse解析不了 编辑:程序博客网 时间:2024/06/08 06:11

问题 D: 欧几里得游戏

时间限制: 1 Sec  内存限制: 32 MB
提交: 15  解决: 1
[提交][状态][讨论版]

题目描述

小明和小红在玩欧几里得游戏。他们从两个自然数开始,第一个玩家小明,从两个数的较大数中减去较小数的尽可能大的正整数倍,只要差为非负即可。然后,第二个玩家小红,对得到的两个数进行同样的操作,然后又是小明。就这样轮流进行游戏,直至某个玩家将较大数减去较小数的某个倍数之后差为0为止,此时游戏结束,该玩家就是胜利者。

输入

输入包含多组测试数据。每组输入两个正整数,表示游戏一开始的两个数,游戏总是小明先开始。
当输入两个0的时候,输入结束。

输出

对于每组输入,输出最后的胜者,我们认为他们两个都是顶尖高手,每一步游戏都做出了最佳的选择。
具体输出格式见输出样例。

样例输入

34 1215 240 0

样例输出

xiaoming wins
#include <stdio.h> int main(){    int k,l,f,s,h;    while(scanf("%d%d",&k,&l),k!=0,l!=0)    {        if(k<l)            {f=k;k=l;l=f;}        f=s=0;        while(k!=1)        {            f++;            if(k==l)                break;            if(k/l!=1)            {                s=1;                break;            }            else{                k-=l;                h=k;k=l;l=h;                }         }        if(s==1&&f%2==1)            printf("xiaoming wins\n");        else if((s==1&&f%2==0))            printf("xiaohong wins\n");        else if(s==0&&f%2==1)            printf("xiaoming wins\n");        else            printf("xiaohong wins\n");    }     return 0;}

xiaohong wins
原创粉丝点击