题解:UVA10257 Dick and Jane
题目描述应该是能读懂的。
信息整合:
-
[ ] 已知 Dick 是
12 岁,且 Jane 为j 岁,求出他们的年龄之和A 。 -
[ ] 输入中给出了
3 只宠物在某个时刻的年龄。 当 Spot 实岁s 岁时,Puff 刚出生;当 Spot 实岁y 岁,且 Puff 实岁p 岁时,而 Turtle 刚出生。他们三现在的年龄之和B 等于A 。
问:三只宠物现在分别多少岁?
代码思路:
先求出
但是,
-
当
K \bmod 3 = 2 时,同时给 Spot 和 Puff 都+1 岁(因为出生月份或日期的不同,可能会导致在某一时刻两只宠物之间年龄差的微变)。这种情况说明 Turtle 的月份小于 Spot 的,也小于 Puff 的月份(数字越大,月份越小)。 -
当
K \bmod 3 = 1 时,要为 Spot 或 Puff 的年龄+1 。因为y 一定是\ge s + p 的,所以只有在[y=s+p]=1 时才将 Spot 的年龄增加1 ,其余的时候将 Puff 的年龄+1 。
CODE:
#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;//好习惯。
}