专栏文章

题解:UVA10257 Dick and Jane

UVA10257题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mioddufz
此快照首次捕获于
2025/12/02 17:22
3 个月前
此快照最后确认于
2025/12/02 17:22
3 个月前
查看原文
题目描述应该是能读懂的。

信息整合:

  • 已知 Dick 是 1212 岁,且 Jane 为 jj 岁,求出他们的年龄之和 AA
  • 输入中给出了 33 只宠物在某个时刻的年龄。 当 Spot 实岁 ss 岁时,Puff 刚出生;当 Spot 实岁 yy 岁,且 Puff 实岁 pp 岁时,而 Turtle 刚出生。他们三现在的年龄之和 BB 等于 AA
问:三只宠物现在分别多少岁?

代码思路:

先求出 AA,再列方程计算现在距离 Turtle 出生过去了的年数 KK,并得出 33 只宠物的年龄。
但是,KK 不一定正好被 33 整除,还需分情况讨论:
  1. Kmod3=2K \bmod 3 = 2 时,同时给 Spot 和 Puff 都 +1+1 岁(因为出生月份或日期的不同,可能会导致在某一时刻两只宠物之间年龄差的微变)。这种情况说明 Turtle 的月份小于 Spot 的,也小于 Puff 的月份(数字越大,月份越小)。
  2. Kmod3=1K \bmod 3 = 1 时,要为 Spot Puff 的年龄 +1+1。因为 yy 一定是 s+p\ge s + p 的,所以只有在 [y=s+p]=1[y=s+p]=1 时才将 Spot 的年龄增加 11,其余的时候将 Puff 的年龄 +1+1

CODE:

CPP
#include<bits/stdc++.h>
using namespace std;
int s,p,y,j;
int main(){
	//可自行添加快读等。
	while(cin>>s>>p>>y>>j){//循环输入。
		int d=12;
		int k=(d+j-p-y)/3;//解方程……
		int S=k+y,P=k+p,Y=k;//把3只宠物年龄列出来。
		if(S+P+Y+2==d+j){//k%3==2时。
			S+=1,P+=1;
		}else if(S+P+Y+1==d+j){//k%3==1时。
			if(y==s+p)S+=1;
			else P+=1;//y>s+p
		}
		cout<<S<<" "<<P<<" "<<Y<<"\n";//记得换行。
	}
	return 0;//好习惯。
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...