Codeforces Round #735 (Div. 2)
A
一道小思维题
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000100;
int a[N];
signed main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int cou = 0;
for (int i=1;i<=n;i++)
{
cin>>a[i];
if (a[i]*a[i-1]>cou)
{
cou = a[i]*a[i-1];
}
}
cout<<cou<<endl;
}
}
C
一个二进制问题
#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[101];
int b[101];
signed main()
{
int t;
cin >> t;
while (t--)
{
int n, m;
cin >> n >> m;
int cou = -1;
for (int i = 0; i < 31; i++)
{
a[i] = m >> i & 1;
b[i] = n >> i & 1;
if (a[i] == 0&&cou==-1)
cou = i;
}
bool flag = false;
int sum = 0;
for (int i = 30; ~i; i--)
{
if (flag)
{
sum *= 2;
}
else
{
if (a[i] == 0)
{
if (b[i] == 0)
{
sum = sum * 2;
}
else
{
flag = true;
sum = sum * 2;
}
}
else
{
if (b[i] == 0)
{
sum = sum * 2 + 1;
}
else
{
sum = sum * 2;
}
}
}
}
if (flag==false) {
sum+=pow(2,cou);
for (int i=cou-1;~i;i--)
{
if (a[i]!=b[i]) sum-=pow(2,i);
}
}
cout << sum << endl;
}
}
D
构造字符串,没啥意思
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
if (n <= 26)
{
for (int i = 0; i < n; i++)
{
printf("%c", 'a' + i);
}
}
else
{
int cou = 0;
if (n % 2==1) cou++;
n /= 2;
if (n %2 == 0)
{
cou += 2;
n--;
}
n /= 2;
// cout<<cou<<" "<<n<<endl;
if (cou < 4) n--;
else cou-=4;
for (int i = 1; i <= n; i++)
{
cout << "a";
}
printf("%c", 'b' + 1);
for (int i = 1; i <= n + 1; i++)
{
cout << "b";
}
printf("%c", 'b' + 2);
for (int i = 1; i <= n + 1; i++)
{
cout << "a";
}
printf("%c", 'b' + 3);
for (int i = 1; i <= n; i++)
{
cout << "b";
}
printf("%c", 'b' + 4);
for (int i = 5; i < cou + 5; i++)
{
printf("%c", 'b' + i);
}
}
cout << endl;
}
}