NC17865. 炸弹游戏
描述
输入描述
第一行有三个整数t,a,b,分别表示炸弹初始时刻的倒计时,可调节时间的范围。(0 ≤ t ≤ 105,1 ≤ a ≤ b ≤ 10)
输出描述
若Alice赢则输出"Alice",若Bob赢则输出"Bob"。
示例1
输入:
6 3 4
输出:
Alice
说明:
Alice只需要将炸弹调快3秒后再给Bob,Bob就会拿到一个2秒后爆炸的炸弹。Python3 解法, 执行用时: 180ms, 内存消耗: 5524K, 提交时间: 2022-10-26 20:36:52
t,a,b=list(map(int,input().split())) ans=[0 for i in range(100010)] for i in range(1,t+1): if ans[i-1]==0: ans[i]=1 for j in range(i-b-1,i-a): if j>=0 and ans[j]==0: ans[i]=1 break if ans[t]==1: print("Alice") else: print("Bob")
C++14(g++5.4) 解法, 执行用时: 7ms, 内存消耗: 792K, 提交时间: 2020-09-03 10:15:05
#include<bits/stdc++.h> using namespace std; int t,a,b,f[100005]; int main() { cin>>t>>a>>b; for(int i=1;i<=t;i++) { if(!f[i-1])f[i]=1; for(int j=a+1;j<=b+1;j++) if(i>=j&&!f[i-j]) f[i]=1; } if(f[t])cout<<"Alice"; else cout<<"Bob"; return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 752K, 提交时间: 2020-01-28 17:51:01
#include<bits/stdc++.h> #define rep(i,s,e) for(int i=s; i<e; ++i) int t,a,b,q[100005]; int main(){ std::cin>>t>>a>>b; rep(i,1,t+1){ if(!q[i-1]) q[i]=1; rep(j,a+1,b+2) if(i>=j&&!q[i-j]) q[i]=1; } puts(q[t]?"Alice":"Bob"); }