ryan_park   8년 전

int64 계산할때 빠르게 하는 방법이 있는건지..

그런게 아니면 재채점 부탁드려요..

yukariko   8년 전

int64가 아니라 여기선 long long 입니다.

제가 풀어본 결과 long long 형으로도 아무 문제 없었습니다.

해법이 틀린것 같네요.

그리고 문제의 질문을 올리거나 재채점을 요구할 때는

자신의 알고리즘의 설명이나 코드, 어째서 타당한지에 대한 내용도 같이 올려주세요.

ryan_park   8년 전

int m;

long long mo = N*N;

for(m=1;m<=N*2;m++) {

if (m == N || 2*N - m < 0) continue;

long long ja = (long long)B*m*(2*N - m);

if (ja % mo == 0) {

int a = ja / mo;

DATA tmp;

tmp.ja = a;

tmp.mo = m;

Ans.push_back(tmp);

}

}

sort(Ans.begin(),Ans.end(),DATA());


-------------------

제가 제출 했던 코드그요..
출제 되었던 대회에서 제공했던 솔루션 코드의 해법도 이것과 똑같았고,

거기서 제공 했던 모범 소스 코드를 제출해봐도 시간 초과가...

yukariko   8년 전

대회에서 해결되었던 코드가 이곳에서 시간초과가 나는 경우는 간간히 있습니다.

저는 gcd를 이용해서 1씩 증가하지않고 일정 구간씩 증가시켰는데 생각해보니 케이스에 따라 TL을 받을것 같긴하네요.

그런데 다른분들 풀이를 보면 2N번이 아니라 N번 반복하신 분도 있고.. 다양한 풀이가 있어서 1초 제한이 부적절하다고 보긴 힘들것 같은데

백준님이 정해주시겠지요..

댓글을 작성하려면 로그인해야 합니다.