아래 https://www.acmicpc.net/board/... 게시글과 동일한 오류를 범하고 계십니다.
(V % P)의 값이 L을 넘는 경우가 있으므로 이에 대한 식에 일반화도 같이 수행해주셔야합니다.
코드 가독성이 난해하여 일부 변수 이름을 재작성하였으니 참고하시기 바랍니다.
#include <iostream> using namespace std; int main(){ int l, p, v; int cnt=0; while(1){ cin>>l>>p>>v; if(l==0 && p==0 && v==0) break; int q = v / p; int r = v % p; int s = q * p; cnt++; printf("Case %d: %d\n",cnt, (s-(q*(p-l)))+r); // => qp - qp + ql + r // => ql + r // => (v / p) * l + (v % p) // (V % P)의 값이 L을 넘는 경우가 있음! (*반례 발생) // => (v / p) * l + min(v % p, l) } return 0; }
sjyog21 1년 전
컴파일잘되고 테스트케이스도 잘되는데
반례가 있어서 (a123 b456c789)
제가 어떤 부분을 추가해야할까요?