자바 8 109 106 101 90 75 74 71 66 바이트
a->{int s=0,p=0;for(int i:a){s+=i;p|=1<<i;}return s<7&p==14?24:s;}
@ OlivierGrégoire 덕분에 -12 바이트 . @Nevay
덕분에 -31 바이트 .
설명:
여기에서 시도하십시오.
a->{ // Method with integer-array parameter and boolean return-type
int s=0, // Sum-integer, starting at 0
p=1; // Product-integer, starting at 1
for(int i:a){ // Loop over the input-array
s+=i; // Add current item to sum
p|=1<<i; // Take 1 bitwise left-shifted with `i`, and bitwise-OR it with `p`
} // End of loop
return p==14 // If `p` is now exactly 14 (`0b1110`)
&s<7? // and the sum is 6 or lower:
24 // Return 24
: // Else:
s; // Return the sum
} // End of method
(비효율적 임) 이 ( ) 일 [1,2,3]때 합계가 6 이하 ( ) 일 때 가능한 결과가 될 수 있다는 증거 : 여기에서 시도하십시오.p0b1110p==14s<7
p==14(는 0b1110입력 값 (32 개)은 커버 값을 모듈로 IFF에) 참으로 평가 1, 2및 3어떠한 다른 값 (함유 없음 p|=1<<i) (각 값은 1 + 번 발생한다). 일치하는 입력의 합은 ( with )을 제외한 모든 입력 p==14보다 큽니다 . N61,2,3s=a*1+b*2+c*3+u*32a>0,b>0,c>0,u>=0
이전 71 바이트 답변 :
a->{int s=0,p=1;for(int i:a){s+=i;p*=i;}return a.length==3&p==s?s*4:s;}
0이 아닌 자연수 3 개에 대해 [1,2,3](어떤 순서로든) 만 제품 ( 1+2+3 == 1*2*3)과 양의 합 (양의 합)을 갖
습니다. 합이 Leo Kurlandchik & Andrzej Nowicki 의 제품과 같을 때
(비효율적 임) 음수가 아닌 숫자와 길이가 3 인 경우에만 [1,2,3](어떤 순서로든) [0,0,0]가능한 결과가 될 수 있음을 증명 하십시오. 여기에서 시도하십시오.
그래서 s*4의지가된다 6*4 = 24위해 [1,2,3], 그리고 0*4 = 0에 대한 [0,0,0].