กำหนดจำนวนบวกเป็นจำนวนหลักและผลรวม เป้าหมายคือการหาตัวเลข d ทั้งหมดที่มีผลรวมของตัวเลขเท่ากับผลรวมที่ป้อน ตัวเลขที่มีศูนย์นำหน้าจะไม่ถือเป็นตัวเลข d หลัก
ช่วงเป็นตัวเลขระหว่าง 1 ถึง 100 และผลรวมระหว่าง 1 ถึง 500
ให้เราเข้าใจด้วยตัวอย่าง
ตัวอย่าง
ป้อนข้อมูล - หลัก =3, Digi_sum =3
ผลลัพธ์ - การนับจำนวน n หลักที่ผลรวมของหลักเท่ากับผลรวมที่กำหนดคือ:6
คำอธิบาย - ตัวเลขสามหลักที่มีผลรวมของหลักเป็น 3 ได้แก่:
102, 111, 120, 201, 210 และ 300
ป้อนข้อมูล - หลัก =4 Digi_sum =2
ผลลัพธ์ - การนับจำนวน n หลักที่ผลรวมของหลักเท่ากับผลรวมที่กำหนดคือ 4
คำอธิบาย - ตัวเลขสี่หลักที่มีผลรวมของหลักเป็น 2 ได้แก่ :
1001, 1010, 1100 และ 2000
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
ในแนวทางนี้ เราจะสำรวจจากตัวเลข d หลักแรก และค้นหาหมายเลขแรกที่มีผลรวมของหลักเท่ากับผลรวมที่กำหนด จากนั้นเพิ่มจำนวนขึ้น 9 จนกว่าเราจะพบผลรวมของหลักที่มากกว่าผลรวมที่กำหนด เมื่อพบตัวเลขที่มีผลรวมหลักมากกว่าผลรวมอินพุตแล้วให้เพิ่มตัวเลข 1 แล้วหาตัวเลขถัดไปโดยมีผลรวมเป็นผลรวมอินพุต ทำขั้นตอนนี้ซ้ำจนถึงตัวเลข d หลักสุดท้าย
- นำจำนวนหลักและผลรวมของหลักมาป้อนข้อมูล
- Function digits_sum(int digits, int digi_sum) รับทั้งค่าอินพุตและคืนค่าการนับจำนวน n หลักซึ่งผลรวมของหลักเท่ากับผลรวมที่กำหนด
- นับเริ่มต้นเป็น 0
- ใช้ตัวเลขแรกเป็น Left =pow(10, digits - 1). และจำนวนสุดท้ายของช่วงเป็น right =pow(10, digits) - 1 ( i.e 10 and 99 for digits=2 )
- ใช้ a while loop เคลื่อนที่จากซ้ายไปขวา
- รับก่อน=0และสุดท้าย=ฉัน
- สำหรับแต่ละ i ( last ) ให้ใช้หลักขวาสุด ( สุดท้าย % 10 ) และเพิ่มเข้าไปก่อน ลดครั้งสุดท้าย 10 สำหรับการทำซ้ำครั้งต่อไป
- หากเท่ากับ digi_sum ในครั้งแรก ให้นับจำนวนและอัปเดต i 9 สำหรับการทำซ้ำครั้งต่อไป
- มิฉะนั้น ให้เพิ่ม i ขึ้น 1
- เมื่อสิ้นสุดการวนซ้ำทั้งหมด เราจะนับเป็นตัวเลขที่มีผลรวมหลักเท่ากับ digi_sum
- ผลตอบแทนนับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h>
using namespace std;
int digits_sum(int digits, int digi_sum) {
int count = 0;
int Left = pow(10, digits - 1);
int right = pow(10, digits) - 1;
int i = Left;
while (i <= right) {
int first = 0;
int last = i;
while (last != 0) {
first = first + last % 10;
last = last / 10;
}
if (first == digi_sum) {
count++;
i = i + 9;
} else {
i++;
}
}
return count;
}
int main() {
int digits = 5;
int digi_sum = 7;
cout << "Count of n digit numbers whose sum of digits equals to given sum are: " << digits_sum(digits, digi_sum);
return 0;
} หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
ผลลัพธ์
Count of n digit numbers whose sum of digits equals to given sum are: 5