1. 程式人生 > >Wannafly挑戰賽28A(模擬,題意文字遊戲)

Wannafly挑戰賽28A(模擬,題意文字遊戲)

題目連結:https://ac.nowcoder.com/acm/contest/217/A

 

剛看這道題的時候還以為是博弈論==,然後稍微一想,發現就是個模擬。。。。水題模擬這個遊戲過程即可。。

需要注意的是>=2*y0站在誰的角度,x的角度沒錯是那樣;y的角度的話就是>=2*x0;因為題目說的是對手的y0,輪到你操作了你就是x,對手就是y不管初始怎麼樣

 

 1 #include <iostream>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=1e6+5;
5 ll a[maxn]; 6 ll x0,y0,l; 7 ll x,y; 8 9 int main() 10 { 11 ios::sync_with_stdio(false); cin.tie(0); 12 13 cin>>x0>>y0>>l; 14 15 x=x0; y=y0; 16 int f1=0,f2=0,p=1; 17 for(;;) 18 { 19 if(p%2)//msc先手 20 { 21 if(x>l) 22 { 23
f1=1; 24 break; 25 } 26 for(;;) 27 { 28 y=y+x; 29 if(y>=y0*2) break; 30 } 31 32 p++; 33 } 34 else 35 { 36 if(y>l) 37 { 38 f2=1
; 39 break; 40 } 41 for(;;) 42 { 43 x=x+y; 44 if(x>=x0*2) break; 45 } 46 p++; 47 } 48 } 49 if(f1) cout<<"Yes "; 50 else cout<<"No "; 51 52 x=x0; y=y0; 53 f1=0,f2=0,p=1; 54 for(;;) 55 { 56 if(p%2==0)//msc後手 57 { 58 if(x>l) 59 { 60 f1=1; 61 break; 62 } 63 for(;;) 64 { 65 y=y+x; 66 if(y>=y0*2) break; 67 } 68 69 p++; 70 } 71 else 72 { 73 if(y>l) 74 { 75 f2=1; 76 break; 77 } 78 for(;;) 79 { 80 x=x+y; 81 if(x>=x0*2) break; 82 } 83 p++; 84 } 85 } 86 if(f1) cout<<"Yes"<<endl; 87 else cout<<"No"<<endl; 88 89 90 return 0; 91 }

 

完。