Giả sử, chúng ta được cho trước hai số có k chữ số m và n. Các chữ số của các số được xáo trộn ngẫu nhiên và sau đó được so sánh. Chúng ta phải tìm ra con số nào có xác suất cao hơn để lớn hơn.
Vì vậy, nếu đầu vào là n =231, m =337, k =3, thì đầu ra sẽ là 'Thứ hai' hoặc số thứ hai có xác suất lớn hơn.
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
s1 := convert n to string s2 := convert m to string f := 0, s = 0 for initialize i := 0, when i < k, update (increase i by 1), do: if s1[i] > s2[i], then: (increase f by 1) otherwise when s1[i] < s2[i], then: (increase s by 1) if f > s, then: print("First") otherwise when s > f, then: print("Second") Otherwise print("Equal")
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#include <bits/stdc++.h> using namespace std; #define N 100 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; }
Đầu vào
231, 337, 3
Đầu ra
Second