Dick and Jane ZOJ1110

题意:

题目告诉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
#include
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;
}

你可能感兴趣的:(数学)