ข้อสอบท้ายค่าย 1 ศูนย์ สอวน.กรุงเทพมหานคร ปี 2566 ข้อที่ 1
Problem
สรุปโจทย์
รับค่าจำนวนเต็ม 3 ตัว \(a, b, x\) แล้วให้แสดงผลค่าในหลักที่ \(x\) ของผลคูณระหว่าง \(a, b\) โดยถ้าไม่มี (\(ab\) มีจำนวนหลักไม่ถึง \(x\) หลัก) ให้พิมพ์ออกมาเป็น '_'
สิ่งที่ต้องทำ
เขียนโค้ดเพื่อแสดงผลค่าในหลักที่ \(x\) ตามที่โจทย์กำหนด
ตัวอย่าง
Input | Output |
---|---|
25 30 2 |
5 |
380 458 3 |
4 |
3456 986 5 |
6 |
239 32 5 |
_ |
Prerequisites
- C/C++ Basics
Solution
วิธีทำ
เมื่อหาผลคูณ \(ab\) มาได้แล้ว เราจะตรวจสอบก่อนว่า ความยาว (จำนวนหลัก) ถึง \(x\) มั้ย
- ถ้าไม่ถึง พิมพ์คำตอบออกมาเลย ('_')
- ถ้าถึง ให้
loop
เพื่อหาคำตอบ
Code
posn1_66_bkk_p1.cpp
#include <stdio.h>
int main(){
int a, b, x;
scanf("%d %d %d", &a, &b, &x);
int c = a * b, cc = c, l = 0;
// นับจำนวนหลักในตัวเลข
while (cc > 0) {
cc /= 10;
l++;
}
// ถ้าจำนวนหลักไม่พอ ก็พิมพ์ '_' แล้วหยุดการทำงานทันที
if (x > l) {
printf("_\n");
return 0;
}
// คำนวณต่อ หาหลักที่ x
for (int i = 1; i <= l - x; i++) {
c /= 10;
}
printf("%d\n", c % 10);
}
หากมีข้อสงสัย ไว้ใต้ post ได้เลยนะครับ หรือพิมพ์ inbox มาได้เลยนะครับ 🙇♂️🙇♂️