Your Ride Is Here

#include <stdio.h>
void main ()
{
    FILE *fin  = fopen ("ride.in", "r");
    FILE *fout = fopen ("ride.out", "w");
    char comet[10],group[10];				//设两个字符数组分别保存彗星和团队名
	int i,c=1,g=1;
    fscanf (fin,"%s\n%s",comet,group);
	for(i=0;comet[i];i++)
		c*=(comet[i]-'A'+1);				//求各个字符对应字母的乘积
	for(i=0;group[i];i++)
		g*=(group[i]-'A'+1);
	fprintf (fout,c%47==g%47?"GO\n":"STAY\n");	//若两数模47同余则输出GO,否则输出STAY
    exit (0);
}
 这题很简单,但第一次提交没通过,原因居然是GO写成了Go。这类小问题一定要注意,不能栽在细节上。
To solve this problem, we can use the concept of relative speed. Let's consider the scenario step by step: 1. First, we need to find the person who sets off the earliest among all the riders. Let's call this person "earliestRider". The time when Weiwei arrives at his office will be equal to the set off time of "earliestRider" plus the time it takes for Weiwei to catch up with "earliestRider". 2. Next, we calculate the relative speed between Weiwei and "earliestRider". If Weiwei is faster than "earliestRider", he will catch up with them before they reach the office. Otherwise, Weiwei will need to wait for someone faster to catch up to him. 3. Once Weiwei catches up with "earliestRider", we update the set off time of "earliestRider" to the time when Weiwei catches up with them. 4. We repeat steps 1-3 until Weiwei reaches his office. Here's a sample C++ code that implements this logic: ```cpp #include <iostream> #include <vector> struct Rider { int setOffTime; int speed; }; int main() { int n; // number of riders (excluding Weiwei) std::cout << "请输入骑行人数(不包括Weiwei):"; std::cin >> n; std::vector<Rider> riders(n); std::cout << "请依次输入每位骑行人的出发时间和速度:" << std::endl; for (int i = 0; i < n; i++) { std::cin >> riders[i].setOffTime >> riders[i].speed; } int weiweiSpeed; std::cout << "请输入Weiwei的速度:"; std::cin >> weiweiSpeed; int weiweiArrivalTime = 0; while (true) { int earliestRiderIndex = -1; int earliestRiderTime = INT_MAX; // Find the earliest rider for (int i = 0; i < n; i++) { if (riders[i].setOffTime < earliestRiderTime) { earliestRiderTime = riders[i].setOffTime; earliestRiderIndex = i; } } // Calculate the time Weiwei takes to catch up with the earliest rider double timeToCatchUp = static_cast<double>(4.5) / (weiweiSpeed - riders[earliestRiderIndex].speed); if (earliestRiderTime + timeToCatchUp <= 60) { weiweiArrivalTime = earliestRiderTime + timeToCatchUp; riders[earliestRiderIndex].setOffTime += timeToCatchUp; } else { break; // Weiwei arrives at or after 60 minutes, stop the loop } } std::cout << "Weiwei到达办公室的时间为:" << weiweiArrivalTime << "分钟" << std::endl; return 0; } ``` In this code, we first input the number of riders (excluding Weiwei) and their set off times and speeds. Then we input Weiwei's speed. The program iterates until Weiwei arrives at or after 60 minutes, finding the earliest rider, calculating the time to catch up with them, and updating their set off time accordingly. Finally, it outputs Weiwei's arrival time at the office. Please note that this is a simplified implementation and doesn't handle all possible edge cases. You can modify and improve it based on your specific requirements. Let me know if you have any further questions!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值