NC15670. 博弈
描述
输入描述
输入数据有多行,每行有三个正整数,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; }