A.简单题,将‘X’和‘x’个个数变得一样,求出改变的次数,并打印出结果字符串
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;
public class Codeforces {
public static void main(String[] args) {
new TaskA().run();
}
}
class TaskA {
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
public void run() {
int n = in.nextInt();
in.nextLine();
char[] str = in.nextLine().toCharArray();
int x = 0, X = 0;
for (int i = 0; i < n; ++i) {
if (str[i] == 'x')++x;
else ++X;
}
char[] ans = new char[n];
int cnt = 0;
for (int i = 0; i < n; ++i)ans[i] = str[i];
// System.out.println(Arrays.toString(ans));
if (x != X) {
for (int i = 0; i < n && x != X; ++i) {
if (ans[i] == 'x' && x > X) {
ans[i] = 'X';
--x;
++X;
++cnt;
}
else if (ans[i] == 'X' && x < X) {
ans[i] = 'x';
++x;
--X;
++cnt;
}
}
}
out.println(cnt);
for (int i = 0; i < n; ++i)out.print(ans[i]);
out.println();
out.flush();
}
}
B。用最小的圆将城市包含起来,使人数达到一百万,将距离又小到大排序,逐个将城市包含,直到人数达到一百万。
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;
public class Codeforces {
public static void main(String[] args) {
new TaskB().run();
}
}
class TaskB {
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
public void run() {
int n = in.nextInt(), s = in.nextInt();
s = 1000000-s;
City[] city = new City[n];
for (int i = 0; i < n; ++i) {
City c = new City();
c.x = in.nextInt();
c.y = in.nextInt();
c.p = in.nextInt();
c.dis = Math.sqrt(1.0*c.x*c.x+1.0*c.y*c.y);
city[i] = c;
}
Arrays.sort(city);
// System.out.println(Arrays.toString(city));
int i = 0;
double ans = 0;
while (s > 0 && i < n) {
// System.out.println(s);
double dis = city[i].dis;
while (i < n && city[i].dis <= dis) {
s -= city[i].p;
ans = city[i].dis;
++i;
}
}
if (s <= 0)
System.out.println(ans);
else
System.out.println("-1");
}
}
class City implements Comparable<City>{
int x;
int y;
int p;
double dis;
@Override public int compareTo(City o) {
return o.dis > this.dis ? -1 : 1;
}
public String toString() {
return new Double(this.dis).toString()+" "+this.p;
}
}
c.给出表达式,求出表达式的值,将每一个q[i]的表达式写出来,每一列又上往下看:除数没变,被除数递增,余数成周期出现,故可先求出每个周期的值,再进行异或。
import java.io.PrintWriter;
import java.util.Scanner;
public class Codeforces {
public static void main(String[] args) {
new TaskC().run();
}
}
class TaskC {
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
public void run() {
int n = in.nextInt();
int[] xor = new int[n+1];
xor[1] = 0;
int ans = in.nextInt();
for (int i = 1; i < n; ++i) {
int p = in.nextInt();
ans ^= p;
}
for (int i = 2; i <= n; ++i) {
xor[i] = xor[i-1]^(i-1);
}
for (int i = 1; i <= n; ++i) {
int tmp = n/i;
if (tmp%2 == 1) {
ans ^= xor[i];
}
if (n%i != 0) {
ans ^= xor[n%i+1];
ans ^= 0;
}
}
out.println(ans);
out.flush();
}
}