列表

详情


NC15670. 博弈

描述

XHRlyb在和Cwbc玩游戏。
在一个多重集合中有在[l,r]中的全部整数各一个,即l,l+1,l+2,......,r。
每次XHRlyb和Cwbc可以选择一个大于0的数字p,把p从多重集合中删去,然后向集合中加入k个,最后不能操作的人算输。
如果博弈双方都是绝顶聪明的,并且XHRlyb先手,请你来帮XHRlyb预测这一局游戏谁会获胜。
如果博弈双方谁也无法取胜,那么判定为平局。
聪明的你在仔细阅读题目后,一定可以顺利的解决这个问题!

输入描述

输入数据有多行,每行有三个正整数,l,r,k。

输出描述

输出数据应有多行,如果这一局XHRlyb获胜,那么请输出XHRlyb;如果Cwbc获胜,请输出Cwbc;如果两人平局,请输出Draw。

示例1

输入:

1 3 2

输出:

XHRlyb

示例2

输入:

1 4 2

输出:

Cwbc

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 418ms, 内存消耗: 376K, 提交时间: 2021-03-14 21:47:59

#include<stdio.h>
int main()
{
    long long i,j,k,l,n,sum=0,r,p,sum1;
 
    while(scanf("%lld%lld%lld",&l,&r,&k)!=EOF){
    if(k==1){
    printf("Draw\n");continue;}
    sum=0;p=0;sum1=0;
    j=k;
    for(i=l;i<=r;i++){
    while(i>=k){k*=j;p++;}
    sum+=k/j;if(k%2==0&&p!=0)sum1+=1;
    if(k%2==1)sum1+=p;

    }
    sum+=sum1;
    if(sum%2==1){
    printf("XHRlyb\n");}
    else{
    printf("Cwbc\n");}
}}

C++14(g++5.4) 解法, 执行用时: 261ms, 内存消耗: 496K, 提交时间: 2020-10-19 22:07:18

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll l,r,k;
int main() {
	while(scanf("%lld%lld%lld",&l,&r,&k)!=EOF) {
		if(k==1) {
			printf("Draw\n");
			continue;
		}
		ll ans=0;
		for(int i=l; i<=r; i++) {
            ll tmp=1;
            while(tmp<=i){
            	ans+=tmp;
            	tmp*=k;
			}
		}
		if(ans&1) printf("XHRlyb\n");
		else printf("Cwbc\n");
	}

}

C++11(clang++ 3.9) 解法, 执行用时: 404ms, 内存消耗: 504K, 提交时间: 2018-05-21 22:01:32

#include<iostream>
using namespace std;

typedef long long ll;

int main(){
	
	ll l,r,k;
	while(cin>>l>>r>>k){
		
ll ans = 0;
	if(k == 1){
		cout<< "Draw"<<endl;
		continue;
	}
	for(ll i=l;i<=r;i++){
		ll tmp = 1;
		while(tmp<=i){
			ans += tmp;
			tmp*=k;
		}
	}
	if(ans&1)	cout<<"XHRlyb";
	else cout<<"Cwbc";
	cout<<endl;
		} 
	return 0;
		
}

上一题