กำหนดจำนวนบวกเป็นจำนวนหลักและผลรวม เป้าหมายคือการหาตัวเลข 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