最新消息:点击查看大S的省钱秘笈

Vijos P1072 新年趣事之债务 C语言版

Vijos题解 Slyar 83浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

背景 Background

在Slyar的信息组里,Slyar1、Slyar2和Slyar3之间有着一种奇怪的债务关系:Slyar1欠了Slyar2一百块钱,Slyar2欠了Slyar3一百块钱,Slyar3欠了Slyar1一百块钱。

描述 Description

一天,三个人遇到了一起。由于他们都不够理智,一心想要回自己借出去的钱,于是互相之间追逐起来。最初,三个人分别站在一个边长为L正三角形的三个顶点上。某一个时刻,三个人同时开始以速度V匀速运动。他们运动的方向是这样的:每一个时刻,Slyar1运动的方向指向Slyar2,Slyar2运动的方向指向Slyar3,Slyar3运动的方向指向Slyar1,总之,每一个时刻,三个人都在尽快的接近各自欠自己债的人。最终,三个人都到达了同一个点上,并且通过和谈的方式解决了这一冲突。
honghong知道此事后,想写一篇报道,宣传这件事情。他想知道每个人走的路程的长度S,以及他们到达同一个点所需要的时间T。

输入格式 Input Format

输入文件有两行。
第一行为一个实数L(0<=L<=1E100)。
第二行为一个实数V(0<=V<=1E100)。

输出格式 Output Format

输出文件有两行。
第一行为一个实数S,保留一位小数。
第二行为一个实数T,保留一位小数。

Tip:纯粹的物理竞赛题,刚开始真蒙了,速度一样,在一个等边三角形上,就是走到中国队拿了世界杯也碰不到头呐。。。

后来想明白了,最重要的是一句话:“每一个时刻,三个人都在尽快的接近各自欠自己债的人”,也就是每个时刻他们的速度方向都指向欠钱的那个人,所以他们越绕圈子越小,最后在三角形的中心碰头……位移就是顶点到中心距离=2/3*l

此题需要双精度double,而且需要使用%lf输出,因为精度问题交了4次才过。。。

#include <stdio.h>

int main(){
double l,v,s,t;
scanf("%lf",&l);
scanf("%lf",&v);
s=l*2.0/3.0; /* 注意精度,一定要加小数点 */
t=l/(1.5*v);
printf("%.1lf\n%.1lf",s,t);
system("pause");
return 0;
}

转载请注明:Slyar Home » Vijos P1072 新年趣事之债务 C语言版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. @xx, 微元法...查一下
    Slyar8年前 (2009-02-03)回复
  2. 我还是不懂 那个路程是 如何计算出来的???
    xx8年前 (2009-02-03)回复