sjyog21   1년 전

컴파일잘되고 테스트케이스도 잘되는데

반례가 있어서 (a123 b456c789)

제가 어떤 부분을 추가해야할까요?

wak8835   1년 전

아래 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;
}

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