题目
A
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
unsigned int n;
cin >> n;
int cc = 0;
while(n){
if(n&1){
cc++;
}
n >>= 1;
}
cout << cc << endl;
return 0;
}
B
#include <cstdio>
#include <iostream>
using namespace std;
int d[805];
int a[805][805];
int x[1000005];
int y[1000005];
int main(){
int n;
cin >> n;
int m = 2*n;
for(int i = 1;i <= m;i++){
for(int j = 1;j < i;j++){
scanf("%d",&a[i][j]);
x[a[i][j]] = i;
y[a[i][j]] = j;
}
}
for(int i = 1000000;i >= 1;i--){
if(!d[x[i]] && !d[y[i]]){
d[x[i]] = y[i];
d[y[i]] = x[i];
}
}
// for(int i = 1;i <= m;i++){
// int mi = 0;
// if(!d[i]){
// for(int j = i+1;j <= m;j++){
// if(!d[j] && a[j][i] > mi){
// mi = a[j][i];
// d[i] = j;
// }
// }
// cout << i << mi << endl;
// d[d[i]] = i;
// }
// }
//
for(int i = 1;i <= m;i++){
if(i!=1){
printf(" ");
}
printf("%d",d[i]);
}
cout << endl;
return 0;
}
C
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
#define INF 1000000001.0
int main(){
int a,b;
cin >> a >> b;
int x = a-b;
int y = a+b;
double ans = INF;
if(a > b){
int c = floor(x/b);
if(c > 0){
if(c&1){
if(c > 1)
ans = x*1.0/(c-1);
}
else{
ans = x * 1.0 /c;
}
}
c = floor(y/b);
if(c & 1){
if(c >= 3){
ans = min(ans,y*1.0/(c-1));
}
}
else{
if(y >= 2)
ans = min(ans,y*1.0/c);
}
if(ans < INF)
printf("%.11f\n",ans);
else{
printf("%.11f\n",-1.0);
}
}
else if(a == b){
printf("%d\n",a);
}
else{
cout << -1 << endl;
}
return 0;
}#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
#define INF 1000000001.0
int main(){
int a,b;
cin >> a >> b;
int x = a-b;
int y = a+b;
double ans = INF;
if(a > b){
int c = floor(x/b);
if(c > 0){
if(c&1){
if(c > 1)
ans = x*1.0/(c-1);
}
else{
ans = x * 1.0 /c;
}
}
c = floor(y/b);
if(c & 1){
if(c >= 3){
ans = min(ans,y*1.0/(c-1));
}
}
else{
if(y >= 2)
ans = min(ans,y*1.0/c);
}
if(ans < INF)
printf("%.11f\n",ans);
else{
printf("%.11f\n",-1.0);
}
}
else if(a == b){
printf("%d\n",a);
}
else{
cout << -1 << endl;
}
return 0;
}
D
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
LL l[200005];
LL a[200005];
LL r[200005];
int main(){
int n,k,x;
cin >> n >>k >>x;
for(int i = 1;i <= n;i++){
scanf("%lld",&a[i]);
}
for(int i = 1;i <= n;i++){
l[i] = l[i-1]|a[i];
}
for(int i = n;i >= 1;i--){
r[i] = r[i+1]|a[i];
}
LL ans = 0;
for(int i = 1;i <= n;i++){
for(int j = 0;j < k;j++){
a[i]*= x;
}
ans = max(ans,a[i]|l[i-1]|r[i+1]);
}
cout<< ans << endl;
return 0;
}