Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các số đến N vừa là hình vuông hoàn hảo vừa là hình lập phương hoàn hảo trong C ++


Chúng ta được cho một số N. Mục đích là đếm các số đến N là hình vuông hoàn hảo cũng như hình lập phương hoàn hảo. Ví dụ:1, 64 vừa là hình vuông hoàn hảo vừa là hình khối hoàn hảo.

Chúng ta sẽ sử dụng sqrt () để tính căn bậc hai và cbrt () để tính căn bậc hai của một số.

Hãy cùng hiểu với các ví dụ.

Đầu vào - N =100

Đầu ra - Đếm các số là hình vuông và hình khối hoàn hảo - 2

Giải thích - 1 và 64 chỉ là các số từ 1 đến 100 vừa là hình vuông vừa là hình khối hoàn hảo.

Đầu vào - N =5000

Đầu ra −Tổng số các số là hình vuông và hình lập phương hoàn hảo - 3

Giải thích - 1, 64 và 4096 chỉ là các số từ 1 đến 5000 vừa là hình vuông vừa là hình khối hoàn hảo.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy một số nguyên N.

  • Hàm getCount (int n) nhận N và trả về số lượng các số lên đến N, vừa là hình vuông hoàn hảo vừa là hình lập phương hoàn hảo.

  • Lấy số lượng ban đầu là 0.

  • Bắt đầu từ i =1 đến i =N, nếu floor (sqrt (i)) ==ceil (sqrt (i)) thì tôi là một hình vuông hoàn hảo.

  • Bây giờ hãy kiểm tra xem sàn (cbrt (i)) ==ceil (cbrt (i)), nếu đúng thì tôi cũng là một khối hoàn hảo. Số lượng tăng dần.

  • Kết quả là kết quả trả về ở cuối vòng lặp.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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