회원에 의해 삭제된 글입니다.
게시글 주소: https://orbi.kr/00024625035
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
죽고싶음 7 1
아니 ㅅㅂ 재수생인데 실화냐 지금까지모햇노 이감 시즌4 1회차 봣는데 5뜸...
게시글 주소: https://orbi.kr/00024625035
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
죽고싶음 7 1
아니 ㅅㅂ 재수생인데 실화냐 지금까지모햇노 이감 시즌4 1회차 봣는데 5뜸...
2027 수능
D - 181
ㅋㅋㅋㅋㅋ
191543 맞나요?
오 혹시 근거가 있나여??
저도 도저히 생각이 안나서, 직접 계량하는 프로그램을 만들어 보았습니다.
약수 개수가 6개이면, 서로 다른 소수 p, q에 대해
p^1 q^2
p^5
의 꼴로 나타낼 수 있습니다. 다음과 같은 계량 함수를 정의합니다 :
소수의 부분집합 X = { x : x^2 ≤ n}을 정의하고,
f(n) = Σ_{k ∈ X} π( n/k^2 ) + π( n^1/5 ) - π ( n^1/3)
(첫번째 식은 p^1 q^2꼴 다 더하는 것, 두번째 식은 p^5꼴 더하는 것, 세번째 식은 중복 제거)
그리고 정수 n을 입력하면 약수 개수가 6개인 n 이하의 자연수의 개수를 출력하는 프로그램을 작성합니다 :
#include
using namespace std;
int prime[1000000] = {0};
int pi[1000000];
int main(){
int n = 0, result = 0;
cin >> n;
prime[0] = prime[1] = 1;
for (int i = 2; i <= 1000; i++){
if(prime[i]) continue;
for (int j = i + i; j <= 1000000; j += i)
prime[j] = 1;
}
pi[0] = 0;
for (int i = 1; i <= 1000000; i++) {
pi[i] = pi[i - 1] + !prime[i];
}
for (int i = 1; i * i <= n; i++) {
if (prime[i]) continue;
result += pi[n / (i * i)];
}
int i = 1, j = 1;
for (; i * i * i * i * i <= n; i++);
for (; j * j * j <= n; j++);
result += pi[i - 1] - pi[j - 1];
cout << result << endl;
return 0;
}
그리고 이분법으로 찾으면 됩니다.
p.s. #include 뒤에 <> 쓰고 그 안에 iostream 넣어야 하는데, 오르비 댓글에서는 잘 안 먹네요 ㅋㅋㅋ
정답 인정ㅋㅋㅋ
대단하시네여ㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋ... 아직 검증은 어떻게 할지 모르겠지만
저정도 코드면 정답찾기는 그냥 간단한 노가다니깐ㅋㅋ