A. Playoff
分析
通过样例可直接推出,按照题目比赛规则(x+y如果是奇数,小的赢;如果是偶数,大的赢)赢的永远是2^-1,直接输出。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=1010;
const ll mod=10007;
const double pi=acos(-1);
int a[maxn][maxn],dp[maxn][maxn];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int ans=pow(2,n)-1;
cout<<ans<<endl;
}
return 0;
}
B. Prove Him Wrong
分析
给定数字n,问是否存在n个数字,保证每个数字的值为在区间[1,1e9],且任意两个数字相减的绝对值*2要大于等于原来两个数的和。
通过公式推导由此可得后一个数最少也得是前一个的3倍,将总和相加,如果超出范围则输出NO。
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn=1010;
const ll mod=10007;
const ll MAX=0x3f3f3f3f;
const double pi=acos(-1);
int a[maxn];
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
a[1]=1;
int f=1;
for(int i=2;i<=n;i++)
{
a[i]=a[i-1]*3;
if(a[i]>1e9)
{
f=0;
}
}
if(f)
{
cout<<"YES"<<endl;
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
else cout<<"NO"<<endl;
}
return 0;
}