Re的故事之抢糖
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
那是去年的平安夜,我们伟大的教练刘晓红教授,给我们一批的队员们买了两盒糖,让我们分;Re大神和Soaring力挫群雄,把所有的糖都给抢了过来,接下来是内部分糖时间了,可是,邪恶的Soaring怎么会和纯真的Re大神来公平的呢;于是Soaring定下了如下的规矩,两人轮流从糖果堆中拿1~m块糖;我们的Re大神那是很喜欢吃糖的,要是最后抓不到糖的话是会哭的%>_<%;那么机制的你就该帮Re大神算算,他到底能不能拿到最后一把糖;已知Soaring非常想看Re哭,而且Re和Soaring都是人精都会采取最优策略;当然,因为飞神过于邪恶,每次抢糖都是他先手;
输入
多组输入,每组输入两个整数
n(0表示糖果总数,m(0表示每次最多拿m块糖;
输出
如果
Re
抢到了最后一把糖输出 “>^_^<
”
;如果
Re
没有抢到最后一把糖输出“
%>_<%”
;(不包括引号);
示例输入
14 2 12 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;
}