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

นับวิธีแสดงตัวเลขเป็นผลรวมของตัวเลขต่อเนื่องในภาษา C++


กำหนดจำนวนเต็ม n เป็นอินพุต เป้าหมายคือการหาจำนวนวิธีที่เราสามารถแสดง 'num' เป็นผลรวมของตัวเลขธรรมชาติสองตัวหรือมากกว่าที่ต่อเนื่องกัน ตัวอย่างเช่น ถ้า n เป็น 3 สามารถแสดงเป็นผลรวม ( 1+2 ) ได้ทั้งหมด 1 วิธี

ตัวอย่าง

อินพุต

num=6

ผลลัพธ์

Count of ways to express a number as sum of consecutive numbers are: 1

คำอธิบาย

The ways in which we can express ‘num’ as sum of consecutive natural
numbers: 1+2+3

อินพุต

num=19

ผลลัพธ์

Count of ways to express a number as sum of consecutive numbers are: 1

คำอธิบาย

The ways in which we can express ‘num’ as sum of consecutive natural
numbers: 9+10

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

ในวิธีนี้เราจะแสดงตัวเลขเป็นผลรวมของ ( a + a+1 + a+2…..+ a+i )

ซึ่งจะกลายเป็น (a)(L+1) คูณ + 1+2+3+4…+i =a*(i+1) + i*(i+1)/2 (ผลรวมของจำนวนธรรมชาติ i) num=a*(i+1) + i*(i+1)/2.a=[ num − (i)*(i+1)/2 ] / (i+1)

เราจะทำสิ่งนี้สำหรับ i=1 ถึง i*(i+1)/2 น้อยกว่า num

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

  • ฟังก์ชัน sum_consecutive(int num) ใช้ num และคืนค่าจำนวนวิธีที่จะแสดง 'num' เป็นผลรวมของจำนวนธรรมชาติที่ต่อเนื่องกัน

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

  • ใช้ความละเอียดของตัวแปรชั่วคราวเป็นแบบลอย

  • ใช้สำหรับวนรอบจาก i=1 ถึง i*(i+1)/2

  • คำนวณค่า [ num − (i)*(i+1)/2 ] / (i+1) และเก็บในรูปแบบ res.

  • หาก res เป็นจำนวนเต็ม ( res − (int)res คือ 0 ) ให้นับจำนวนที่เพิ่มขึ้น

  • ในตอนท้ายเราได้นับเป็นวิธีที่สามารถแสดง num เป็นผลรวมของจำนวนธรรมชาติที่ต่อเนื่องกัน

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

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int sum_consecutive(int num){
   int count = 0;
   int temp = num * 2;
   float res;
   for (int i = 1; i * (i + 1) < temp; i++){
      int store = i + 1;
      res = (1.0 * num−(i * (i + 1)) / 2) / store;
      float check = res − (int)res;
      if(check == 0.0){
         count++;
      }
   }
   return count;
}
int main(){
   int num = 20;
   cout<<"Count of ways to express a number as sum of consecutive numbers are: "<<sum_consecutive(num) << endl;
   return 0;
}

ผลลัพธ์

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

Count of ways to express a number as sum of consecutive numbers are: 1