명절날
1995 단어 조건 브랜치
어느 왕국에서는 역법이 독특하다. 역법은 다음과 같다.
・ 1년은 1월부터 13월까지 13개월이 있다.
・짝수 달의 일수는 15일이다.
・홀수 개월의 일수는 13일이다.
어느 왕국의 국민들은 이 명절을 매우 좋아해서 다음 날을 늘 기대하고 있다.
자네도 제전을 기대하고 있으니 다음 날이 며칠 남았는지 일찍 알고 싶군.
따라서 현재 날짜와 다음 명절 개최일을 드릴 테니 다음 명절까지의 일수를 계산하는 프로그램을 만들어 보세요.
하지만 올해 명절이 열리지 않는다는 것을 알고 오늘 날짜를 계산하지 않았다.
예 1을 입력하면 다음과 같습니다.
2000년부터 보면 최근 개최년은 2001년이다.2000년 12월 10일부터 2001년 1월 10일까지 일수는 5+13+10=28일이다.
코드 예
#変数への格納と余りが1の年(開催年 == opening_y)を炙り出すための材料となる「starting_y」を作成する
starting_y_origin,starting_m,starting_d = gets.chomp.split(" ").map(&:to_i)
opening_m,opening_d = gets.chomp.split(" ").map(&:to_i)
starting_y = starting_y_origin
#この時にはまだ謎に包まれているopening_yを炙り出す
#二つの分岐を作るが、最終的に格納される変数は同じ
if starting_y_origin % 4 == 0
opening_y = starting_y_origin + 1
else
loop do
starting_y += 1
break if starting_y % 4 == 1
opening_y = starting_y + 1
end
end
if starting_m.odd?
rest_days_sm = (13 - starting_d)
this_year_days = ((starting_m..13).to_a.count{|m| m.odd? == true} -1)*13 + ((starting_m..13).to_a.count{|m| m.even? == true})*15 + rest_days_sm
else
rest_days_sm = (15- starting_d)
this_year_days = ((starting_m..13).to_a.count{|m| m.odd? == true})*13 + ((starting_m..13).to_a.count{|m| m.even? == true}-1)*15 + rest_days_sm
end
if opening_m.odd?
op_year_days = ((1..opening_m).to_a.count{|m| m.odd? == true} -1)*13 +((1..opening_m).to_a.count{|m| m.even? == true})*15 + opening_d
else
op_year_days = ((1..opening_m).to_a.count{|m| m.odd? == true})*13 + ((1..opening_m).to_a.count{|m| m.even? == true} -1)*15 + opening_d
end
if (opening_y - (starting_y_origin)) == 1
puts this_year_days + op_year_days
else
puts (15*6 + 13*7)*((opening_y - starting_y_origin) - 1) + this_year_days + op_year_days
end
Reference
이 문제에 관하여(명절날), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zuttti25/items/49621d87a0e05789c272텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)