NC21844. Problem B. Wpremig的AH之战
描述
AH是auction house,拍卖行的缩写。众所周知,为了道具流通,基本上每个网络游戏都会有拍卖行或者类似拍卖行的系统存在。
Wpremig最近喜欢上玩《XX传奇》,游戏为了吸引玩家,推出了一种"抢拍模式",在原有的拍卖行竞价基础上,增加了一条规则:只有最早竞价的两个人有资格竞价。
原本规则如下:
所有物品初始价格为0, 每次加价必须在[1,N]内,并且不存在一口价功能,只有一个价格上限M,当某次某个玩家加价后的价格大于等于M时,这个玩家就可以拍下物品,或者在48小时后还没有超出上限,那么当前出价人拍下物品。
Wpremig通过内部消息知道明天会拍卖一件神器,并且找到了一个脚本软件,能保证自己一定是第一个竞价的人,但是现在他的几个不同的消息来源,给出的物品价格是不一样的,所以他并不知道到时候神器的准确价格是多少,但是可以知道一点,另一个玩家一定不会在中途放弃。
所以Wpremig想要知道对于每种N,M的情况,自己一开始出价多少才能够保证自己拍到这件物品?
输入描述
多组数据,不超过100组。
每组数据包含两个整数N,M表示加价区间[1,N]和价格上限M,(1<=N,M<=1024)
输出描述
对于每组数据输出Wpremig所有可行的第一次加价方案,从小到大用空格隔开。若不存在可行的方案,则输出"You are loser"
示例1
输入:
4 3
输出:
3 4
C(clang 3.9) 解法, 执行用时: 6ms, 内存消耗: 360K, 提交时间: 2018-12-29 13:03:12
#include<stdio.h> int main() { int m, n,i; while (scanf("%d%d",&n,&m)!=EOF) { if(m%(n+1)==0) printf("You are loser\n"); else if(n>=m) { for(i=m;i<n;i++) printf("%d ",i); printf("%d\n",n); } else printf("%d\n",m%(n+1)); } return 0; }
Python3(3.9) 解法, 执行用时: 47ms, 内存消耗: 6784K, 提交时间: 2021-04-15 14:25:31
import sys for line in sys.stdin: n, m = map(int,line.split()) if m <= n: lst = [str(i) for i in range(m,n+1)] print(' '.join(lst)) elif m % (n+1) == 0: print("You are loser") else: print(m % (n+1))
C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 484K, 提交时间: 2018-12-22 14:25:53
#include<iostream> using namespace std; int main(){ int m,n; while(cin>>n>>m){ if(n>=m){ for(;n>=m;m++) cout<<m<<" "; } else{ if(m%(n+1)==0) cout<<"You are loser"; else cout<<m%(n+1); }cout<<endl;} return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 476K, 提交时间: 2019-01-04 16:21:19
#include<stdio.h> int main() { int N,M,i; while(~scanf("%d%d",&N,&M)){ if(N>=M) { for(i=M;i<=N;i++) printf("%d ",i); printf("\n");} else if(M%(N+1)==0) printf("You are loser\n"); else printf("%d\n",M%(N+1)); }return 0; }