Die dritte Herausforderung.
Ein Beispiel für die Verwendung der case-Anweisung, aber schreiben Sie alles auf und übergeben Sie
abc168a.rb
n = gets.chomp.to_s[-1,1]
#puts n
#puts n[-1,1]
if n=="3"
puts "bon"
else
if n== "0"
puts "pon"
else
if n== "1"
puts "pon"
else
if n== "6"
puts "pon"
else
if n=="8"
puts "pon"
else
puts "hon"
end
end
end
end
end
Richtig umgeschrieben mit einer case-Anweisung.
case.rb
n = gets.chomp.to_s[-1,1]
case n
when "3"
puts "bon"
when "0","1","6","8"
puts "pon"
else
puts "hon"
end
Wenn die Ausgabe lang ist, ist es klüger, sie auszuschneiden und am Ende 3 Punkte hinzuzufügen, anstatt die Ausgabe in Fälle aufzuteilen.
abc168b.rb
k = gets.chomp.to_i
s = gets.chomp.to_s
if s.length <= k
puts s
else
print s[0..k-1]
print "..."
end
Da die Koordinaten der Spitze beider Nadeln erhalten werden können, kann der Abstand zwischen den beiden Punkten direkt berechnet werden. Wenn Sie jeden numerischen Wert als Ganzzahl behandeln, wird er zur Hälfte AC und zur Hälfte WA des Testfalls. Konvertieren Sie ihn also nach einer Weile in Float und AC. Wie in der Erklärung erwähnt, reduziert das Lösen mit dem Kosinussatz den Rechenaufwand um 3 Dreiecksfunktionen. Ist dies jedoch in Ordnung, da keine Schleife vorhanden ist?
abc168c.rb
imput = gets.chomp.split(" ").map!{|item| item.to_i}
a = imput[0].to_f
b = imput[1].to_f
h = imput[2].to_f
m = imput[3].to_f
hang = Math::PI*(30*h + m/2)/180
mang = Math::PI*m*6/180
hy = Math.sin(hang)*a
hx = Math.cos(hang)*a
my = Math.sin(mang)*b
mx = Math.cos(mang)*b
puts Math.sqrt((hy-my)**2 + (hx-mx)**2)
Wenn der kurze Zeiger als Koordinatenachse verwendet wird, wird die Berechnung für zwei Dreiecksfunktionen reduziert.
abc168c.rb
imput = gets.chomp.split(" ").map!{|item| item.to_f}
a = imput[0]
b = imput[1]
h = imput[2]
m = imput[3]
hang = Math::PI*(30*h + m/2)/180
mang = Math::PI*m*6/180
ang = mang - hang
mx = Math.cos(ang)*b
my = Math.sin(ang)*b
puts Math.sqrt((a-mx)**2 + (my)**2)
Ich gab auf, weil ich das D-Problem nicht lösen konnte, nachdem ich das D-Problem mehr als 60 Minuten hier gelesen hatte. Die einzige Möglichkeit, D / E / F herauszufordern, besteht darin, ein Beispiel eines Algorithmus zu lösen und es zu erwerben. Es scheint notwendig zu sein, eine Reihe von Standardfragen der Vergangenheit zu behandeln, um diesmal nicht von Machtfähigkeiten wie dem A-Problem abhängig zu sein.
Recommended Posts