Re的故事之抢糖

来源:互联网 发布:mac盗版软件下载 编辑:程序博客网 时间:2024/04/30 23:29

Re的故事之抢糖

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

那是去年的平安夜,我们伟大的教练刘晓红教授,给我们一批的队员们买了两盒糖,让我们分;Re大神和Soaring力挫群雄,把所有的糖都给抢了过来,接下来是内部分糖时间了,可是,邪恶的Soaring怎么会和纯真的Re大神来公平的呢;于是Soaring定下了如下的规矩,两人轮流从糖果堆中拿1~m块糖;我们的Re大神那是很喜欢吃糖的,要是最后抓不到糖的话是会哭的%>_<%;那么机制的你就该帮Re大神算算,他到底能不能拿到最后一把糖;已知Soaring非常想看Re哭,而且ReSoaring都是人精都会采取最优策略;当然,因为飞神过于邪恶,每次抢糖都是他先手;

 

输入

 多组输入,每组输入两个整数n(0表示糖果总数,m(0表示每次最多拿m块糖;

输出

 如果Re抢到了最后一把糖输出 “>^_^<;如果Re没有抢到最后一把糖输出“%>_<%”;(不包括引号);

示例输入

14 212 2

示例输出

%>_<%>^_^<

提示

 

来源

 flyfire

示例程序

#include <iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;bool flag[100010];int main(){   int m,n,j,i,sum,u;   while(cin>>n>>m)   {       memset(flag,0,sizeof(flag));        for(i=1;i<=m;i++)       {           flag[i]=true;       }       if(m>=n)       {           cout<<"%%>_<%%\n";           continue;           }       for(i=m+1;i<=n;i++)       {           j=i;u=j-m;sum=0;           j--;           while(j>=u)           {               sum+=flag[j];               j--;           }           if(sum<m)           flag[i]=true;       }      if(!flag[n])      cout<<">^_^<\n";      else      cout<<"%>_<%\n";   }    return 0;  }

例二:
#include <iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;void solve(){     int m,n;   while(cin>>n>>m)   {       if(n%(m+1)==0)      cout<<">^_^<\n";      else      cout<<"%>_<%\n";   }}int main(){    solve();    return 0;}


0 0
原创粉丝点击