ให้ตัวเลข 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