우리에게 숫자 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))인지 확인하고, true이면 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