思路:
** 每次,将三个数中最大的和最小(非零)的数同时减一,减到三个数中有两个为0时,减得次数为存活的天数。**
欢迎大家批评指正
7-4 镜子大师
镜子大师冈特·欧迪姆是一个来自外世界的恶魔,他的寿命跨过了时间的长河,他能肆意地将时间停止,将人的灵魂剥去…
镜子大师似乎无所不能,但事实可能并非如此,镜子大师的力量来自与他人签订的契约,他通过一些障眼法巧妙的把契约中不利于自己的那部分隐藏起来,以此赢得赌注
不幸的Rampage撞到了镜子大师,镜子大师给Rampage下了一个死亡的诅咒;此外,镜子大师还给了Rampage一定数量的三种药草,每天吃下两棵不同种类的药草可以延缓一天诅咒爆发的时间
镜子大师要求Rampage回答出他最多还能活几天,如果答对了,那么镜子大师就会解除诅咒,否则,Rampage只有死路一条了
输入格式:
输入的第一行包含一个正整数 T (T≤10的3次方),代表测试数据的个数 接下来 T 行,每行输入三个正整数
a,b,c(a,b,c≤10的次方8),分别对应三种药草的数量
输出格式:
对应每组测试数据输出一行,输出一个数代表Rampage最长能存活的天数
输入样例:
6
1 1 1
1 2 1
4 1 1
7 4 10
8 1 4
8 2 8
输出样例:
1
2
2
10
5
9
//package Number; //pta 不提交 包名
import java.util.Scanner;
class data{
int a,b,c;
}
public class Main { //pta中这个类 必须叫 Main
public static int max(int a,int b, int c) {
if(a>=b&&a>=c) {
return a;
}
else if(b>=a&&b>=c) {
return b;
}
else {
return c;
}
}
public static int min(int a,int b, int c) {
if(a<=b&&a<=c) {
return a;
}
else if(b<=a&&b<=c) {
return b;
}
else {
return c;
}
}
public static int mid(int a,int b, int c) {
if((a<=b&&a>=c)||(a<=c&&a>=b)) {
return a;
}
else if((b<=a&&b>=c)||(b<=c&&b>=a)) {
return b;
}
else {
return c;
}
}
public static void sort(data d) {
int a1,a2,a3;
a1=max(d.a ,d.b ,d.c);
a2=mid(d.a ,d.b ,d.c);
a3=min(d.a ,d.b ,d.c);
d.a=a1;d.b=a2;d.c=a3;
}
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
int n=scn.nextInt();
int arr[]=new int[n];
for(int i=0;i<n;i++) {
arr[i]=0;
}
data d=new data();
for(int i=0;i<n;i++) {
d.a=scn.nextInt();
d.b=scn.nextInt();
d.c=scn.nextInt();
sort(d);
while(d.c>0) {
d.a--;
d.c--;
arr[i]++;
sort(d);
}
arr[i]+=d.b;
}
scn.close();
for(int i=0;i<n;i++) {
System.out.println(arr[i]);
}
}
}