A.社团招新
题目:
计网院里面有n个学生。
他们中任意一些人都可以成立一个社团。
如果社团满足3男有1女,就可以一对情侣一对基。
但是院里要求这些社团有如下要求:
• 为方便社团决议(少数服从多数),每个社团里面只有奇数个成员;
• 为方便社团联谊,每两个社团的共同成员是偶数。
现在,计网院的海王哥哥想要知道最多可以成立几个社团。
Input
第一行是一个整数T (1 ≤ T ≤ 200000),表示样例的个数。
以后每行一个样例,为一个整数n (3 ≤ n ≤ 1000000)。
Output
每行输出一个样例的结果。
代码:
点击查看代码
import java.util.Scanner;
public class MainA {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
while(T-->0) {
int n = scanner.nextInt();
System.out.println(n);
}
}
}
B.字符串
题目:
lililalala和kukyo在 玩 一 个 字 符 串 游 戏 , 具 体 规 则 为 : 给 定 一 个 只 含 小 写 字 母 的 字 符
串S,lililalala和kukyo轮流在S上选择两个相同且相邻的字母删除,删除完之后再将两端连接起来。比
如"funny"→"fuy","aab"→"b")。如果某一方不能执行删除操作则判负,另一方获胜。 现在lililalala先
进行操作,假设双方都以最优策略进行游戏,谁会获胜?
Input
第一行一个整数T (1 ≤ T ≤ 1000),表示测试样例个数。 然后的每一行表示一个测试样例,包含一个字
符串S,字符串只含小写英文字母,长度不超过105。 保证输入中所有字符串的长度之和
P|S| ≤ 106。
Output
对每个样例输出一行,如果lililalala能获胜输出"Yes",否则输出"No"。
代码:
点击查看代码
import java.util.Scanner;
public class MainB1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
int count = 0;
while(T-->0) {
String s = scanner.next();
String s2 = "";
count = 0;
while(!s.equals(s2)) {
for(int i = 0;i < s.length()-1;i++) {
if(s.charAt(i)==s.charAt(i+1)) {
count++;
i++;
}else {
s2+=s.charAt(i);
}
}
s2+=s.charAt(s.length()-1);
if(s.equals(s2)) {
break;
}else {
s = s2;
s2="";
}
}
if(count%2==0) {
System.out.println("No");
}else {
System.out.println("Yes");
}
}
}
}
D.香蕉
题目:
你有n根香蕉,要分给m只猴子,每只猴子都要有香蕉。无论怎么分配,请问至少多少只猴子分得的香
蕉数是一样的?
比如有5根香蕉,分给3只猴子,我们只能按(1, 1, 3)或者(1, 2, 2)分配,这样无论怎么分配,至少都有2只
猴子获得的香蕉是一样的。如果有6根香蕉,分给3只猴子,那么我们可以按(1, 2, 3)分配,这样的话,至
少1只猴子分得的香蕉数是一样的。
Input
第一行输入一个整数T‘(1 ≤ T ≤ 1000),表示样例的个数。
每行一个样例,为两个整数n (1 ≤ n ≤ 10^18), m (1 ≤ m ≤ 10^9
, m ≤ n)。
Output
依次每行输出一个样例的结果,为一个整数。
代码:
点击查看代码
import java.util.Scanner;
public class MianD {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
while(T-->0) {
long n = scanner.nextLong();
long m = scanner.nextLong();
long k = m*(m+1)/2;
if(n==m) {
System.out.println(n);
}else if(n>=k){
System.out.println(1);
}else {
if(n-m==1) {
System.out.println(m-1);
}else {
if(n-m<(m+1)/2) {
System.out.println(n-m);
}else if(n-m==2) {
System.out.println(2);
}
else if(n-m==(m+1)/2){
System.out.println(n-m<m-(n-m)?n-m:m-(n-m));
}else {
System.out.println(2>m-(n-m)?2:m-(n-m));
}
}
}
}
}
}