기금넷 공식사이트 - 복권 조회 - 다음 C 언어 문제의 코드는 어떻게 쓰나요?
다음 C 언어 문제의 코드는 어떻게 쓰나요?
S=k 일 때, 모든 상자의 옷은 마침 K, 즉 수출은 을 눌러 섹션을 인쇄할 수도 있습니다
S>K 인 경우 다음 할당 시나리오를 고려하여 연속 상자의 총 옷 수가 k 가 되지 않도록 합니다.
K 상자마다 조를 나누다. 1 옷만 k- 1 개 상자에 할당되고 k+ 1 개 옷만 k 번째 상자에 할당됩니다.
이렇게 하면 연속 상자 중 하나에 있는 총 옷 수가 최대 k- 1 또는 최소한 k+ 1 이 됩니다.
그리고 이 방안에 필요한 옷의 총수는 가장 적다.
그룹당 총 옷 수는 k- 1+k+ 1=2k 이므로 n 개 상자를 n/k 그룹으로 나누고 나머지 n%k 개 상자도 1 조각입니다.
그럼 이 방안에 필요한 총 옷 수는 합계 = (n/k) * 2 * k+n% k 입니다.
S & ltSum 인 경우 그룹 내의 k 번째 상자는 k+ 1 의류에 할당할 수 없습니다.
이 상자와 그 옆에 있는 몇 개의 상자는 K 와 의 연속 상자를 형성할 수 있습니다. 즉, 출력은 다음과 같습니다. 을 눌러 섹션을 인쇄할 수도 있습니다
S=sum 인 경우 위의 할당 시나리오가 존재할 뿐 출력이 없음을 의미합니다.
S & gtSum 인 경우 여분의 옷을 그룹 내의 k 번째 상자에 할당할 수 있으므로 옷 수가 k+ 1 보다 큽니다.
그러나 여전히 연속 상자의 총 옷 수가 K 가 아닌 출력 no 를 만족시킵니다.
요약하면 c 코드 및 실행 결과는 다음과 같습니다.
출력이 견본에 맞으니 받아주시기 바랍니다 ~
추가 소스 코드:
# include & ltstdio.h & gt
Typedef long long ll
Int main() {
Int T, RES
Ll s, n, k, sum
Scanf("%d ",& ampt);
While (T-) {
Scanf("%lld%lld%lld ",& amps & amp;; N & amp;; K);
RES = 0;;
If(s & gt;; K) {
합계 = (n/k) * 2 * k+n% k;
If(s & lt;; 합계)
Res =1;
}
Else if (s == k)
Res =1;
If (res)?
Printf ("yes \ n");
그렇지 않으면요?
Printf ("no \ n");
}
0 을 반환합니다
}