Dick and Jane ZOJ1110

本文介绍了一道关于根据宠物间年龄关系及年龄总和求解具体年龄的问题,并提供了一段C++代码实现。通过分析年龄差与多余年龄的分布规律,文章详细解释了如何根据不同条件确定每只宠物的具体年龄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值