Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับตัวเลขที่มี 0 เป็นหลักใน C++


เราได้ให้ตัวเลข N เป้าหมายคือการหาตัวเลขที่มี 0 เป็นหลักและอยู่ในช่วง [1,N].

เราจะทำได้โดยข้ามผ่านตัวเลขตั้งแต่ 10 ถึง N ( ไม่ต้องตรวจสอบจาก 1 ถึง 9 ) และสำหรับตัวเลขแต่ละตัว เราจะตรวจสอบแต่ละหลักโดยใช้ while loop หากพบว่ามีเลขใดเพิ่มขึ้นเป็นศูนย์ ให้เลื่อนไปที่เลขถัดไป มิฉะนั้น ให้ลดจำนวนลง 10 หลักเพื่อตรวจสอบตัวเลขจนเป็น>0

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล

N=11

ผลผลิต

Numbers from 1 to N with 0 as digit: 1

คำอธิบาย

Starting from i=10 to i<=11
Only 10 has 0 as a digit. No need to check the range [1,9].

ป้อนข้อมูล

N=100

ผลผลิต

Numbers from 1 to N with 0 as digit: 10

คำอธิบาย

10, 20, 30, 40, 50, 60, 70, 80, 90, 100. Ten numbers have 0 as digits.

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เราหาจำนวนเต็ม N.

  • ฟังก์ชัน haveZero(int n) รับ n เป็นพารามิเตอร์และส่งกลับจำนวนตัวเลขที่มี 0 เป็นตัวเลข

  • ใช้ตัวแปรเริ่มต้นนับเป็น 0 สำหรับตัวเลขดังกล่าว

  • ข้ามช่วงของตัวเลขโดยใช้การวนซ้ำ i=10 ถึง i=n

  • ตอนนี้สำหรับแต่ละตัวเลข num=i ใช้ while loop ตรวจสอบว่า num%10==0 ถ้าเท็จให้หาร num ด้วย 10 และเลื่อนไปที่หลักถัดไปจนถึง num>0

  • หากเป็น true ให้หยุดตรวจสอบเพิ่ม นับและแตกขณะวนซ้ำ

  • เมื่อสิ้นสุดการวนซ้ำทั้งหมด การนับจะมีตัวเลขทั้งหมดที่มี 0 เป็นตัวเลขระหว่าง 1 ถึง N

  • คืนค่าการนับเป็นผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int haveZero(int n){
   int count = 0;
   for (int i = 1; i <= n; i++) {
      int num = i;
      while(num>1){
         int digit=num%10;
         if (digit == 0){
            count++;
            break;
         }
         else
            { num=num/10; }
      }
   }
   return count;
}
int main(){
   int N = 200;
   cout <<"Numbers from 1 to N with 0 as digit: "<<haveZero(N);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Numbers from 1 to N with 0 as digit: 29