結果
問題 |
No.5 数字のブロック
|
ユーザー |
![]() |
提出日時 | 2017-02-10 16:39:23 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,319 bytes |
コンパイル時間 | 393 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 25,856 KB |
最終ジャッジ日時 | 2024-12-26 18:18:00 |
合計ジャッジ時間 | 20,798 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 13 WA * 13 RE * 5 TLE * 3 |
ソースコード
import sys def check_range(a,b,x): if a > x or b < x: sys.exit() def check_eq(a,b): if a != b: sys.exit() def cal_realx(data,list,L): realx = list[:] ans = 0 length = len(realx) for i in range(0,length): ans += data[i] * realx[i] if len(list) == len(data): if ans <= L: return realx else: return [] if ans + data[length] <= L: realx.append(1) realx = cal_realx(data,realx,L) elif ans < L: realx.append((L - ans) / data[length]) realx = cal_realx(data,realx,L) else: realx.append(0) realx = cal_realx(data,realx,L) return realx def check_digit(realx,N): if len(realx) == 0: return True for i in range(0,N): if realx[i] != int(realx[i]): return False return True def cal(data,list,L): buf = list[:] ans = cal_realx(data,buf,L) if check_digit(ans,len(data)) == True: return ans elif len(buf) < len(data): buf.append(0) ans1 = cal(data,buf,L) buf.pop() buf.append(1) ans2 = cal(data,buf,L) if ans1.count(1) > ans2.count(1): return ans1 else: return ans2 L = int(input()) check_range(1,10000,L) N = int(input()) check_range(1,10000,N) data = input().split(' ') check_eq(len(data),N) for i in range(0,N): data[i] = int(data[i]) check_range(1,L,N) max = 0 cnt = 0 list = [] print(cal(data,list,L).count(1))