poj 2645 - Boastin 'Red Socks - 컴 포 지 팅.
해석:
우선 p / q 가 어떻게 왔 는 지 명 확 히 하 세 요.우 리 는 전체 양말 의 수량 이 i 이 고 빨 간 양말 의 수량 은 j 라 고 가정 한다.
p / q 는 C (j, 2) / C (i, 2) 입 니 다.즉 j (j - 1) / (i * (i - 1) = p / q;
이때 i 를 매 거 하여 j 의 값 을 계산 합 니 다.
주의: i * (i - 1) = tmp 가 i 를 요구 하면 i = (int) sqrt (tmp + 0.5) + 1 입 니 다.
자세 한 코드 분석:
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
#define sf scanf
#define pf printf
#define INF 1<<29
#define eps 1e-6
const double PI=acos(-1.0);
#define lint __int64
#define LL long long
#define ULLint unsigned long long //2^64-1>1.8*10^19
#define clr(x) memset(x,0,sizeof(x))
#define Clr(x) memset(x,-1,sizeof(x))
LL gcd(LL a , LL b){
return b==0 ? a : gcd(b,a%b);
}
int main(){
LL p,q;
while(sf("%lld%lld",&p,&q)){
if(!p && !q) break;
if(p==q){
pf("2 0
");
continue;
}
if(p==0){
printf("0 2
");
continue;
}
LL g=gcd(p,q);
p/=g; q/=g;
LL i,j;
for(i=2; i<=50000; i++)
if(i*(i-1)%q==0){
LL n=i*(i-1)/q;
LL m=n*p;
j=(LL)sqrt(m+0.5)+1;
if(j*(j-1)==m && j>=2)
break;
}
if(i>50000)
pf("impossible
");
else
pf("%lld %lld
",j,i-j);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.