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

นับจำนวน N หลักทั้งหมด เช่น num + Rev(num) =10^N - 1 ใน C++


ให้ตัวเลข N เป็นอินพุต เป้าหมายคือการหาการนับจำนวน N หลักทั้งหมดที่มีผลรวม Count ของตัวเลข N ทั้งหมดนั้น num + Rev(num) =10 N − 1

num+rev(num)=10 N -1

ตัวอย่าง

อินพุต

N=4

ผลลัพธ์

นับจำนวน N หลักทั้งหมด โดยที่ num + Rev(num) =10 N − 1 คือ − 90

คำอธิบาย

The numbers would be −

1. 1188 + 8811 = 9999
2. 2277 + 7722 = 9999
3. 1278 + 8721 = 9999
……...total 90 numbers

อินพุต

N=5

ผลลัพธ์

Count of all N digit numbers such that num + Rev(num) = 10N − 1 are − 0

คำอธิบาย

As N is odd, there will be no such number as the middle element will be
added to itself and cannot have sum as 9.
Ex. 148+841=989

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

สำหรับเลข N ตัวใดตัวหนึ่ง ผลรวมของเลขกลับกันจะเป็น 9N-1 =999..N คูณ ถ้าผลรวมของตัวเลขแต่ละตัวในตัวเลขทั้งสองตัวและการกลับตัวของมันคือ 9 ในกรณีของ N ที่เป็นคี่ หลักกลางจะถูกบวกเข้ากับตัวมันเอง . เนื่องจากไม่มีจำนวนเต็มเท่ากันที่มีผลรวม 9 ดังนั้นคำตอบจะเป็น 0 ในกรณีของคู่ N คู่ของ 1st−N, 2nd−N-1th, 3rd−N−2.. ตัวเลขจะต้องเป็น 9 คู่ที่เป็นไปได้ จะเป็น (1+8) (2+7) (3+6) (4+5), (5+4) ,(6+3), (7+2), (8+1), (9+0). คำตอบจะเป็น 9*10 N/2 − 1

  • ใช้จำนวนเต็ม N เป็นอินพุต

  • ฟังก์ชัน digit_numbers(int N) รับ N และส่งกลับจำนวน N หลักทั้งหมด เช่น num + Rev(num) =10^N − 1

  • นับเริ่มต้นเป็น 0

  • ถ้า N เป็นเลขคี่ แล้ว N%2 จะเป็น 1 คืนค่า 0

  • ชุดอื่นนับ =9 * pow(10, N/2 − 1).

  • ผลตอบแทนนับเป็นผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int digit_numbers(int N){
   int count = 0;
   if (N % 2 == 1){
      return 0;
   } else {
      count = 9 * pow(10, N/2 − 1);
   }
   return count;
}
int main(){
   int N = 4;
   cout<<"Count of all N digit numbers such that num + Rev(num) = 10^N − 1 are: "<<digit_numbers(N);
   return 0;
}

ผลลัพธ์

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

Count of all N digit numbers such that num + Rev(num) = 10^N − 1 are: 90