다단계 마케팅 관련 과제.
동료는 보상 받기를 원합니다. 그래서 N
투자자 들을 끌어 모았고 N>=1
, 각 i 번째 투자자는 투자했습니다 x[i]
. 총액이 임계 값을 초과 x[0]+x[1]+...+x[N-1] >= T
하면 동료에게 보상을 줄 수 있습니다. 그러나 다음 조건이 충족되는 경우에만 :
- 최소 투자자 금액은
M
(M<=N
) 보다 커야합니다 . - 적어도 하나의 정수의
k
경우,k>=M
그리고k<=N
모든k
투자자는 적어도T/k
각각 투자해야한다 .
을 감안할 때 N, x[], T, M
당신은 동료의 보상 (부울 결과, "예"또는 "아니오") 생성 여부를 결정 없습니다. 가장 짧은 코드가 승리합니다.
예 :
N=5; M=3; T=10000
동료의 보상을 생성하려면 다음 중 하나를 충족해야합니다.
- 3 개는 각각 3334 개 이상을 투자
- 4 명은 각각 2500 명 이상을 투자했습니다.
- 5 명 모두 최소 2000 명씩 투자
N=6; M=2; T=5000
:
- 2 개는 각각 2500 개 이상 투자
- 3 명은 각각 1667 명 이상을 투자했습니다.
- 4 명은 각각 최소 1250 명을 투자
- 5 개는 각각 최소 1000 개를 투자했습니다
- 6 명 모두 최소 834 명씩 투자
일반화 : 어떤을 위해 k
, 여기서 k>=M
및 k<=N
:
- 임의
k
의N
투자가 적어도 투자T/k
각
테스트 사례 :
체재:
N, x[], T, M -> correct answer
6, [999, 999, 59, 0, 0, 0], 180, 3 -> 0
6, [0, 60, 0, 60, 60, 0], 180, 3 -> 1
6, [179, 89, 59, 44, 35, 29], 180, 3 -> 0
6, [179, 89, 59, 44, 35, 30], 180, 3 -> 1
6, [179, 89, 59, 44, 36, 29], 180, 3 -> 1
6, [179, 90, 59, 44, 35, 29], 180, 3 -> 0
6, [30, 30, 30, 30, 29, 30], 180, 3 -> 0
6, [30, 30, 30, 30, 30, 30], 180, 3 -> 1
true
와 진실한 가치 false
?
len(x)
는 글쓰기보다 짧을 것N
입니다.x
C 에 동적으로 할당 된 배열의 경우 직접len(x)
함수 가 없으므로 길이를 항상로 참조 할 수 있습니다N
. 편의상 모든 입력 데이터N, x[], T, M
를 외부 적으로 정의 된 상수 또는 언어 내장으로 간주 할 수 있습니다 .