ได้รับตัวเลข N ต้องคูณตัวเลขกับหลักคี่ที่มากที่สุดของมัน หากไม่มีหลักคี่ให้พิมพ์ -1
เช่น เรากำหนด N เป็น "153" และหลักคี่ที่มากที่สุดในตัวเลขนี้คือ 5 ดังนั้นผลลัพธ์จะเป็นผลคูณของ 153 กับ 5 คือ 153 * 5 = 765 และถ้าตัวเลขไม่มีหลักคี่เช่น 246 เอาต์พุตต้องเป็น -1
ตัวอย่าง
อินพุต — N = 198
เอาต์พุต — 1782
คำอธิบาย — 198 * 9 = 1782
อินพุต — N = 15382
เอาต์พุต — 76910
คำอธิบาย — 15382 * 5 = 76910
วิธีการแก้ปัญหา
- รับอินพุต N
- วนทุกหลักและค้นหาหลักคี่
- หาหลักคี่ที่มากที่สุด
- คูณหลักคี่มากที่สุดกับตัวเลขต้นฉบับ N
- ถ้าไม่มีหลักคี่ อัปเดตผลลัพธ์เป็น -1
- คืนผลลัพธ์
อัลกอริทึม
Start
In function int largestodd(int n)
Step 1: ประกาศและกำหนด large = -1
Step 2: Loop While n > 0
Set digit = n % 10
ถ้า digit % 2 == 1 และ digit > large แล้ว Set large = digit
Set n = n / 10
Step 3: Return large
In function int findproduct(int n)
Step 1: ประกาศและกำหนด large = largestodd(n)
Step 2: ถ้า large == -1 แล้ว Return -1
Step 3: Return (n * large)
In function int main()
Step 1: กำหนด n = 15637
Step 2: พิมพ์ผลลัพธ์จากการเรียก findproduct(n)
Stop
ตัวอย่างโค้ด
#include <stdio.h>
int largestodd(int n) {
// ถ้าหลักทั้งหมดเป็นเลขคู่ เราจะคืนค่า -1
int large = -1;
while (n > 0) {
// ตรวจสอบจากหลักสุดท้าย
int digit = n % 10;
// ถ้าหลักปัจจุบันเป็นคี่และมากกว่า large
if (digit % 2 == 1 && digit > large)
large = digit;
n = n / 10;
}
// คืนค่าหลักคี่สูงสุดของ n
return large;
}
int findproduct(int n) {
int large = largestodd(n);
// ถ้าไม่มีหลักคี่ใน n
if (large == -1)
return -1;
// ผลคูณของ n กับหลักคี่สูงสุด
return (n * large);
}
int main() {
int n = 15637;
printf("%d\n", findproduct(n));
return 0;
}
ผลลัพธ์
หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —
109459