結果
| 問題 |
No.5 数字のブロック
|
| コンテスト | |
| ユーザー |
dashi_dragons
|
| 提出日時 | 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))
dashi_dragons