這個題我原本想找規律去判斷。但是最後發現,暴力的複雜度也可以接受。
證明提示如下:
O(∑n=1n(2n−1))=O(∑n=1n2n−2)=O(n2)
也就是說平均需要執行 O(n√) 次操作。
模擬題意即可,交替減去a與b,若是誰不夠了,就輸出誰。
利用 a1=1,an=1−an−1 (2≤n) 能生成0、1交替的數列,來實現交替減法。
#include<bits/stdc++.h>
using namespace std;
#define int long long
main(){
int a,b;
cin >> a >> b;
int cnt = 1;
for(int i = 1;;i++){
if(cnt%2){
if(a<i){
break;
}else a-=i;
}else{
if(b<i){
break;
}else b-=i;
}
cnt=1-cnt;
}
if(cnt){
cout << "Vladik" << endl;
}else cout << "Valera" << endl;
}