Cho số N. Tính tích N với chữ số lẻ lớn nhất trong N. Nếu không có chữ số lẻ → trả về -1.
Ví dụ
Đầu vào - N = 198
Đầu ra - 1782 (198 × 9)
Đầu vào - N = 15382
Đầu ra - 76910 (15382 × 5)
Đầu vào - N = 246
Đầu ra - -1 (không có chữ số lẻ)
Phương pháp
- Hàm
largestOdd(n): duyệt các chữ số (n%10), tìm max lẻ - Hàm
findProduct(n): gọi largestOdd, nếu -1 trả về -1, ngược lại n × maxOdd
Chương trình mẫu
#include <stdio.h>
int largestOdd(int n) {
int maxOdd = -1;
while (n > 0) {
int digit = n % 10;
if (digit % 2 == 1 && digit > maxOdd)
maxOdd = digit;
n /= 10;
}
return maxOdd;
}
int findProduct(int n) {
int maxOdd = largestOdd(n);
if (maxOdd == -1) return -1;
return n * maxOdd;
}
int main() {
int n = 15637;
printf("%d\n", findProduct(n));
return 0;
}
Kết quả
109459
Giải thích: 15637 × 7 = 109459 (7 là chữ số lẻ lớn nhất)