HDOJ 1286 새로운 친구 찾기 (수론) (오로라 함수)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10305 Accepted Submission(s): 5439
Problem Description
새해 가 다가 오고 있 습 니 다. '돼지 머리 방 협회' 는 모임 을 준비 하고 있 습 니 다. 기 존의 회원 N 명 을 알 고 회원 을 1 부터 N 까지 번호 가 있 습 니 다. 그 중에서 회장 의 번 호 는 N 번 입 니 다. 회장 님 과 오 랜 친구 라면 이 회원 의 번 호 는 N 과 1 이상 의 공약수 가 있 을 것 입 니 다. 그렇지 않 으 면 모두 새로운 친구 입 니 다. 지금 회장 님 은 도대체 몇 명의 새로운 친구 가 있 는 지 알 고 싶 습 니 다.프로그램 을 짜 서 회장 님 계산 을 도와 주세요.
Input
첫 번 째 줄 은 데 이 터 를 테스트 하 는 그룹 수 CN (Case number, 1 & lt; CN & gt; 10000) 이 고, 이 어 CN 행 정수 N (1 & gt; n & gt; 32768) 이 회원 수 를 나타 낸다.
Output
모든 N 에 대해 새로운 친 구 를 출력 하 는 사람 수 는 모두 CN 줄 로 출력 합 니 다.
Sample Input
2
25608
24027
Sample Output
7680
16016
첫 번 째 방법 은 간단 한 인자 제거 입 니 다. n 의 인자 와 n 을 포함 한 인 자 를 모두 제거 하면 새로운 친구 의 수 를 찾 을 수 있 습 니 다.
#include<iostream>
#include<cstdio>
using namespace std;
const int N=32790;
int primer[N];
int main()
{
int t,n;
cin>>t;
while(t--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
primer[i]=1;// 0
for(int i=2;i<=n;i++)
{
if(n%i==0)
for(int j=i;j<=n;j+=i)
primer[j]=0;// n 0,
}
int sum=0;
for(int i=1;i<=n;i++)// 1 , (1 )
sum+=primer[i];
printf("%d
",sum);
}
return 0;
}
두 번 째 는 오로라 함 수 를 이용 하여 해 를 구 하 는 것 이다. 오로라 함수 의 정 의 를 방금 알 았 다. 수론 에서 정수 n, 오로라 함 수 는 n 보다 작은 숫자 에서 n 과 서로 질 적 인 수의 수량 이다.
공식:
그 중에서 p1, p2... pn 은 x 의 모든 질량 인수 이 고 x 는 0 이 아 닌 정수 입 니 다.φ(1) = 1 (유일 과 1 의 상호 질의 수 (1 보다 작 음) 은 1 자체 다.(주의: 각 질량 인 수 는 하나 입 니 다. 예 를 들 어 12 = 2 * 2 * 3 그러면φ(12) = 12 * (1 - 1 / 2) * (1 - 1 / 3) = 4 (백과사전 에서 유래)
코드 (상용 phi 템 플 릿):
#include<iostream>
#include<cstdio>
using namespace std;
int phi(int n)// phi
{
int ans,i,k;
if(n==1)
ans=0;
else
{
ans=n;
k=1;
for(i=2;n!=1;i+=k)
{
if(n%i==0)
{
ans*=(i-1);//
ans/=i;
while(n%i==0)// p1, p2……pn x
n/=i;
i=k;
}
}
}
return ans;
}
int main()
{
int n,t;
while(~scanf("%d",&t))
{
while(t--)
{
cin>>n;
cout<<phi(n)<<endl;
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU 5608] functionProblem Description There is a function f(x),which is defined on the natural numbers set N,satisfies the following eqaut...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.