以下は、優先順位が最も高い製品問題、すなわちリスト内の2つの数値の積の最大値を返すために実行しようとしているコードです。私の問題は、入力リストの数字が大きい場合、計算されている製品が正しくないということです。私は、整数のオーバーフローがエラーになることはなく、結果として得られる製品は自動的に長くなると考えていましたが、私の乗算が何らかのゴミを返すので、明らかに起こっていません。可能なPythonの整数オーバーフローエラー
#"python2"
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 28 17:12:38 2016
@author: pvatsa
"""
import numpy as np
n = int(raw_input())
alist = np.random.randint(100000, size = n)
print alist
assert(len(alist) == n)
alist = sorted(alist)
print alist
max_no = max(alist)
second_largest_no = alist[n-2]
print max_no*second_largest_no
#print long(product)
#print type(product)
pythonのバージョンは2.7です:(正しくは動作しませんが –
私はかなり悪いテストケースを実行している可能性があります。理論的には100k * 100kはint32をオーバーフローさせることができるので、この状況ではほとんどの場合、numpy配列 'alist = np.random.randint(100000、size = n、dtype = 'int64')' –