結果

問題 No.732 3PrimeCounting
コンテスト
ユーザー startcpp
提出日時 2017-01-22 15:37:45
言語 Ruby
(4.0.2)
コンパイル:
ruby -w -c _filename_
実行:
ruby _filename_
結果
TLE  
実行時間 -
コード長 920 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 156 ms
コンパイル使用メモリ 9,216 KB
実行使用メモリ 21,632 KB
最終ジャッジ日時 2026-05-29 07:33:27
合計ジャッジ時間 42,507 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 73 TLE * 1 -- * 15
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #
raw source code

#rubyの引数, 代入は参照渡し. 参照透明性とは何だったのか…

def setPrime (is_prime, primes, n)
	for i in 2..n do
		is_prime[i] = true
	end
	
	for i in 2..n do
		if is_prime[i] then
			j = 2 * i
			while j <= n do
				is_prime[j] = false
				j += i
			end
		end
	end
	
	for i in 2..n do
		if is_prime[i] then
			primes.push(i);
		end
	end
end

def initCnts (cnts, n)
	for i in 0..n do
		cnts[i] = 0
	end
end

#ここからmain
n = STDIN.gets.chop.to_i

is_prime = Array.new
primes   = Array.new
cnts     = Array.new

setPrime(is_prime, primes, 400000)
initCnts(cnts, 400000)

ans = 0
max_exist = 0
i = 0
while primes[i] <= n do
	j = i + 1
	while primes[j] - primes[i] <= max_exist do
		ans += cnts[primes[j] - primes[i]]
		j += 1
	end
	
	j = 0
	while j < i do
		cnts[primes[j] + primes[i]] += 1
		j += 1
	end
	
	if (i > 0) then
		max_exist = primes[i] + primes[i - 1]
	end
	
	i += 1
end

puts(ans)
0