Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาผู้ชนะการพิมพ์เกมหลังเวลาดีเลย์


สมมติว่าเรามีตัวเลขห้าตัว s, v1, v2, t1 และ t2 Amal และ Bimal กำลังเล่นเกมพิมพ์ดีด พวกเขากำลังเล่นเกมออนไลน์ ในเกมนี้พวกเขาจะพิมพ์สตริงที่มีความยาว s Amal พิมพ์อักขระหนึ่งตัวใน v1 มิลลิวินาที และ Bimal พิมพ์หนึ่งอักขระใน v2 มิลลิวินาที ความล่าช้าของเครือข่ายของ Amal คือ t1 มิลลิวินาที และความล่าช้าของเครือข่ายของ Bimal คือ t2 มิลลิวินาที

หากความล่าช้าในการเชื่อมต่อคือ t มิลลิวินาที การแข่งขันจะผ่านสำหรับผู้เข้าร่วมดังนี้ -

  • หลังจากผ่านไป t มิลลิวินาทีหลังจากที่เกมเริ่ม ผู้เข้าร่วมจะได้รับข้อความที่จะป้อน

  • หลังจากนั้นเขาก็เริ่มพิมพ์

  • ในเวลาเพียงเสี้ยววินาทีหลังจากที่เขาพิมพ์ข้อความทั้งหมดเสร็จ ไซต์จะได้รับข้อมูลเกี่ยวกับข้อความนั้น

ใครเสร็จเร็วกว่าจะเป็นผู้ชนะ หากเวลาสำหรับผู้เข้าร่วมทั้งสองเท่ากัน ถือว่าเสมอกัน เราต้องหาผู้ชนะให้ได้

ดังนั้น ถ้าอินพุตเป็น s =5; v1 =1; v2 =2; t1 =1; t2 =2 จากนั้นผลลัพธ์จะเป็น Amal เนื่องจากข้อมูลเกี่ยวกับความสำเร็จของ Amal มาใน 7 มิลลิวินาที ของ Bimal ใน 14 มิลลิวินาที อามาลชนะ

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

p := (s * v1) + (2 * t1)
q := (s * v2) + (2 * t2)
if p is same as q, then:
   return "Draw"
otherwise when p < q, then:
   return "Amal"
Otherwise
   return "Bimal"

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;

string solve(int s, int v1, int v2, int t1, int t2) {
   int p = (s * v1) + (2 * t1);
   int q = (s * v2) + (2 * t2);
   if (p == q)
      return "Draw";
   else if (p < q)
      return "Amal";
else
   return "Bimal";
}
int main() {
   int s = 5;
   int v1 = 1;
   int v2 = 2;
   int t1 = 1;
   int t2 = 2;
   cout << solve(s, v1, v2, t1, t2) << endl;
}

อินพุต

5, 1, 2, 1, 2

ผลลัพธ์

Amal