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

นับจำนวนไม่เกิน N ซึ่งเป็นทั้งกำลังสองสมบูรณ์และลูกบาศก์ที่สมบูรณ์แบบใน C++


เราได้รับตัวเลข N เป้าหมายคือการนับจำนวนไม่เกิน N ซึ่งเป็นกำลังสองสมบูรณ์และลูกบาศก์ที่สมบูรณ์แบบ ตัวอย่างเช่น 1, 64 เป็นทั้งกำลังสองสมบูรณ์และกำลังสองสมบูรณ์

เราจะใช้ sqrt() เพื่อคำนวณรากที่สองและ cbrt() เพื่อคำนวณรากที่สามของตัวเลข

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล − N=100

ผลผลิต − การนับจำนวนที่เป็นกำลังสองและลูกบาศก์ที่สมบูรณ์แบบ − 2

คำอธิบาย − 1 และ 64 เป็นเพียงตัวเลขตั้งแต่ 1 ถึง 100 ที่เป็นทั้งกำลังสองและกำลังสองที่สมบูรณ์แบบ

ป้อนข้อมูล − N=5000

ผลผลิต −จำนวนตัวเลขที่เป็นกำลังสองและลูกบาศก์ที่สมบูรณ์แบบ − 3

คำอธิบาย − 1, 64 และ 4096 เป็นเพียงตัวเลขตั้งแต่ 1 ถึง 5000 ที่เป็นทั้งกำลังสองและกำลังสองที่สมบูรณ์แบบ

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

  • เราหาจำนวนเต็ม N.

  • ฟังก์ชัน getCount(int n) รับ N และส่งกลับจำนวนตัวเลขไม่เกิน N ซึ่งเป็นทั้งกำลังสองสมบูรณ์และกำลังสองสมบูรณ์

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

  • เริ่มจาก i=1 ถึง i=N ถ้า floor(sqrt(i))==ceil(sqrt(i)) แล้ว i เป็นสี่เหลี่ยมจัตุรัสที่สมบูรณ์แบบ

  • ตอนนี้ตรวจสอบว่า floor(cbrt(i))==ceil(cbrt(i)) ถ้าจริง i เป็นลูกบาศก์ที่สมบูรณ์แบบด้วย จำนวนที่เพิ่มขึ้น

  • เมื่อสิ้นสุดการวนกลับนับเป็นผลลัพธ์

ตัวอย่าง

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int getCount(int n){
   int count=0;
   for(int i=1;i<=n;i++){
      if(floor(sqrt(i))==ceil(sqrt(i))){
         if(floor(cbrt(i))==ceil(cbrt(i))){
            count++;
            //cout<<i<<" ";
         }
      }
   }
   return count;
}
int main(){
   int N=100;
   cout<<endl<<"Numbers upto N that are perfect squares and perfect cubes:"<<getCount(N);
   return 0;
}

ผลลัพธ์

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

Numbers upto N that are perfect squares and perfect cubes:2