結果
| 問題 |
No.319 happy b1rthday 2 me
|
| コンテスト | |
| ユーザー |
小指が強い人
|
| 提出日時 | 2015-12-12 17:42:58 |
| 言語 | Ruby (3.4.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,346 bytes |
| コンパイル時間 | 222 ms |
| コンパイル使用メモリ | 7,296 KB |
| 実行使用メモリ | 12,288 KB |
| 最終ジャッジ日時 | 2024-09-15 08:47:12 |
| 合計ジャッジ時間 | 4,103 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 28 WA * 1 |
コンパイルメッセージ
Main.rb:15: warning: assigned but unused variable - an Main.rb:15: warning: assigned but unused variable - bn Main.rb:19: warning: assigned but unused variable - ch Main.rb:20: warning: assigned but unused variable - ss Syntax OK
ソースコード
#happy b1rthday 2 me
def comb(n, m)
q = 1
m.times do |x|
q *= n - x
q /= (x + 1)
end
return q
end
a, b = gets.split
if a == b
puts 0
exit
end
an, bn = a.to_i, b.to_i
la = a.length
lb = b.length
res = 0
ch = 0
ss = ""
=begin
(a.to_i).upto(b.to_i) do |x|
ss += x.to_s
end
(ss.length - 1).times do |i|
ch += 1 if ss[i, 2].to_i == 12
end
puts ch
=end
la.upto(lb) do |x|
if x == 1
res += 1
next
end
d = x - 2
res += 10 ** d
res += d * 9 * 10 ** (d - 1) if d > 0
if x >= 3
res += 10 ** (x - 2)
else
res += 1
end
end
y = 2
(la - y).downto(0) do |i|
j = la - i - y
q = 0
mid = a[i, y].to_i
left = a[0, i].to_i
right = a[i + y, j].to_i
if i == 0
if mid > 12
q += 10 ** j
elsif mid == 12
q += right
end
elsif i == la - y
q += left - 10 ** (i - 1)
q += 1 if mid > 12
else
if mid > 12
q += (left - 10 ** (i - 1) + 1) * 10 ** j
elsif mid < 12
q += (left - 10 ** (i - 1)) * 10 ** j
else
q += (left - 10 ** (i - 1)) * 10 ** j
q += right
end
end
res -= q
end
if a.length - 2 >= 0
if a[0].to_i > 2
res -= 10 ** (a.length - 2)
elsif a[0].to_i == 2
res -= a[1, a.length - 2].to_i + 1
res += 1 if a[a.length - 1].to_i < 2
end
else
if a[0].to_i >= 2
res -= 1
end
end
(lb - y).downto(0) do |i|
j = lb - i - y
q = 0
mid = b[i, y].to_i
left = b[0, i].to_i
right = b[i + y, j].to_i
if i == 0
if mid < 12
q += 10 ** j
elsif mid == 12
q += 10 ** j - right - 1
end
elsif i == lb - y
q += 10 ** i - left
q -= 1 if mid >= 12
else
if mid < 12
q += (10 ** i - left) * 10 ** j
elsif mid > 12
q += (10 ** i - left - 1) * 10 ** j
else
q += (10 ** i - left - 1) * 10 ** j
q += 10 ** j - right - 1
end
end
res -= q
end
if b.length - 2 >= 0
if b[0].to_i < 2
res -= 10 ** (b.length - 2)
elsif b[0].to_i == 2
res -= 10 ** (b.length - 2) - b[1, b.length - 2].to_i
res += 1 if b[b.length - 1].to_i >= 2
end
end
puts res
小指が強い人