สมมติว่าเรามีตัวเลข k หลัก m และ n ตัวเลขถูกสุ่มสลับแล้วเปรียบเทียบ เราต้องหาว่าหมายเลขไหนมีโอกาสมากกว่าที่จะใหญ่กว่า
เช่น ถ้าอินพุตคือ n = 231, m = 337, k = 3 เอาต์พุตจะเป็น 'Second' หมายถึงหมายเลขที่สองมีโอกาสมากกว่า
ขั้นตอนการแก้ปัญหา
s1 := แปลง n เป็นสตริง
s2 := แปลง m เป็นสตริง
f := 0, s := 0
for i := 0 ถึง k-1:
if s1[i] > s2[i]: เพิ่ม f ขึ้น 1
else if s1[i] < s2[i]: เพิ่ม s ขึ้น 1
if f > s: print("First")
else if s > f: print("Second")
else: print("Equal")
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
void solve(int n, int m, int k) {
string s1 = to_string(n);
string s2 = to_string(m);
int f = 0, s = 0;
for (int i = 0; i < k; i++) {
if (s1[i] > s2[i]) f++;
else if (s1[i] < s2[i]) s++;
}
if (f > s) cout << "First" << endl;
else if (s > f) cout << "Second" << endl;
else cout << "Equal" << endl;
}
int main() {
int n = 231, m = 337, k = 3;
solve(n, m, k);
return 0;
}
อินพุต
231, 337, 3
เอาต์พุต
Second