Computer >> Máy Tính >  >> Lập trình >> lập trình C

Tích của N với chữ số lẻ lớn nhất trong C


Cho một số N với chúng ta phải tích số có chữ số lẻ lớn nhất của nó. Nếu không có chữ số lẻ thì in -1.

Giống như chúng ta đã khởi tạo N bằng “153” và chữ số lẻ lớn nhất trong số này là 5 nên kết quả sẽ là tích của 153 với 5, tức là 153 * 5 =765 và nếu số không có chữ số lẻ như 246 thì kết quả phải là -1.

Đầu vào - N =198

Đầu ra - 1782

Giải thích - 198 * 9 =1782

Đầu vào - N =15382

Đầu ra - 76910

Giải thích - 15382 * 5 =76910

Phương pháp tiếp cận được sử dụng bên dưới như sau để giải quyết vấn đề -

  • Lấy đầu vào N.

  • Duyệt qua từng chữ số và tìm các chữ số lẻ

  • Tìm phần tử lẻ lớn nhất.

  • Tích số phần tử tắt lớn nhất với số ban đầu N.

  • Nếu không có kết quả cập nhật phần tử lẻ nào bằng -1.

  • Trả lại kết quả.

Thuật toán

Start
In function int largestodd(int n)
   Step 1→ Declare and Initialize large as -1
   Step 2→ Loop While n > 0
      Set digit as n % 10
      If digit % 2 == 1 && digit > large then,
         Set large as digit
      Set n as n / 10
   Step 3→ Return large
In function int findproduct(int n)
   Step 1→ Declare and Initialize large set largestodd(n)
   Step 2→ If large == -1 then,
      Return -1
   Step 3→ Return (n * large)
In function int main()
   Step 1→ Initialize n as 15637
   Print the results from calling findproduct(n)
Stop

Ví dụ

#include <stdio.h>
int largestodd(int n){
   // If all digits are even then
   // we wil return -1
   int large = -1;
   while (n > 0) {
      // checking from the last digit
      int digit = n % 10;
      // If the current digit is odd and
      // is greater than the large
      if (digit % 2 == 1 && digit > large)
         large = digit;
      n = n / 10;
   }
   // To return the maximum
   // odd digit of n
   return large;
}
int findproduct(int n){
   int large = largestodd(n);
   // If there are no odd digits in n
   if (large == -1)
      return -1;
   // Product of n with its largest odd digit
   return (n * large);
}
int main(){
   int n = 15637;
   printf("%d\n", findproduct(n));
   return 0;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

109459