题意:
题目告诉3只宠物年龄之间的关系,以及两个人的年龄总和,以及他们之间的关系,求3只宠物现在的年龄。
设x1为dog的年龄,x2为Cat的年龄,x3为Turtle乌龟的年龄
关键点:3只宠物之间存在年份不同造成多余的年龄差,即年龄差不等于日期减去日期
1)先说不存在多余的年龄差
如题中 5 5 10 9
2)存在一岁的多余年龄差(加在Dog身上的情况)
如题中5 5 10 10
3)存在一岁的多余年龄差(加在Cat身上的情况)
如 5 6 9 10
应输出 11 9 2
4)存在两岁的多余年龄差(Dog,Cat各加1岁)
如 5 6 11 10
应输出 13 8 1
大家可以多举实际例子试试。
代码
/*
* title :Dick and Jane zoj1110
* date : 2019-3-31
* author: Wu Zongyuan
*/
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
//循环会超时,最开始做的时候是用的循环,
//导致少考虑了一种情况超时,然后再试另辟蹊径
int s,p,y,j;
while(~scanf("%d%d%d%d",&s,&p,&y,&j)){
//x1表示第一只宠物,x2,x3以此类推
int x1 = y,x2 = p;
int x3 = 0;
//表示多出来的岁数,按宠物分配
int t = 12 + j - x1 -x2;
//一岁不多的情况
if(t%3 == 0)
printf("%d %d %d\n",x1+t/3,x2+t/3,x3+t/3);
//多一岁的情况
else if(t%3 == 1){
//加在第一个人的身上
if(y==(s+p))
printf("%d %d %d\n",x1+t/3+1,x2+t/3,x3+t/3);
//加在第二个人身上
else
printf("%d %d %d\n",x1+t/3,x2+t/3+1,x3+t/3);
}
//多两岁的情况
else
printf("%d %d %d\n",x1+t/3+1,x2+t/3+1,x3+t/3);
}
return 0;
}