明明由于工作的关系,经常需要坐船到某地出差办事。久而久之,明明就对这两地之间船的班次情况相当了解,他会根据办事的具体情况选择不同班次的船出行。这两地的船一共分为三个班次:特快船、快船、慢船,三个班次的船在同一天的0点从港口出发,并沿着同一路线匀速航行,只是它们到达目的地的时刻不同。 你作为明明的好朋友,有一次和明明在闲聊,问到他出差时船的航行距离有多少时,明明没有正面回答你这个问题,而只是把三艘船(特快、快、慢)的速度,以及它们到达目的地的时间是几点钟(并不知道分别是哪一天,只知道三艘船都在100天以内到达了终点)告诉了你,要你推算出两地间的距离长度。你作为一位程序设计专家,自然不会被明明的这个问题所难倒,于是你决定写一个程序,来求解这个看似困难其实简单的问题。 明明的问题可以归结为:给出三艘船的速度,以及它们到达目的地时是几点钟(并不知道分别是哪一天,只知道三艘船都在100天以内到达了终点),求两地间的距离到底有多少。若有多组解,只输出最小的那组解。
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
#include <sstream>
#include <map>
using namespace std;
int main() {
int a, b, c;
while (cin >> a >> b >> c) {
int d, e, f;
cin >> d >> e >> f;
int i = 0;
int j = 0;
int k = 0;
bool flag = true;
int adis = i * 24 * d + a * d;
int bdis = j * 24 * e + b * e;
int cdis = k * 24 * f + c * f;
while (adis != bdis || adis != cdis || bdis != cdis) {
while (adis < bdis) {
if (adis == bdis) {
break;
}
i++;
adis = i * 24 * d + a * d;
}
while(adis > bdis) {
if (adis == bdis) {
break;
}
j++;
bdis = j * 24 * e + b * e;
}
while (adis < cdis) {
if (adis == cdis) {
break;
}
i++;
adis = i * 24 * d + a * d;
}
while(adis > cdis) {
if (adis == cdis) {
break;
}
k++;
cdis = k * 24 * f + c * f;
}
while (bdis < cdis) {
if (bdis == cdis) {
break;
}
j++;
bdis = j * 24 * e + b * e;
}
while (bdis > cdis) {
if (bdis == cdis) {
break;
}
k++;
cdis = k * 24 * f + c * f;
}
}
cout << adis << endl;
}
return 0;
}