Проблем с задача 08.Traveling at Light Speed
Колеги това е условието:
Traveling at Light Speed
Create a program that finds for how many weeks, days, hours, minutes and seconds can an object fly at light speed
Assume that 1 light year == 9 450 000 000 000 km.
Assume that the speed of light == 300 000 km / second.
Input
- On first line you receive – the light years to convert
Output
Every number in the output should be formatted to 0 digits after the floating point
- On first line – time in weeks
- On second line – time in days
- On third line – time in hours
- On fourth line – time in minutes
- On fifth line – time in seconds
Examples
Input |
Output |
|
Input |
Output |
|
Input |
Output |
14 |
729 weeks 1 days 4 hours 0 minutes 0 seconds |
|
5 |
260 weeks 3 days 22 hours 0 minutes 0 seconds |
|
0.00000005 |
0 weeks 0 days 0 hours 0 minutes 2 seconds |
Hints
- Search in internet how to convert units.
- The type decimal is big enough for the calculations.
А това ми е кода :
http://pastebin.com/RFxHvgyf
ПС: Решението ми е било правилно, имало е грешки в тестовете на judge. (преди това ми даваше 50/100)
Не съм сигурен, но според мен някъде се бърка при пресмятането по този начин. Това, това което забелязвам е, че при пресмятане на ръка и 0.00000005 този input се получава отговор 1.575 секунди, което се закръгляна 2 секунди (отговора в judge e 1 секунда). При използване на TimeSpan решението също е 1 може да е проблем от закръгляне, които не се отчита. Факт е че на колегата решието дава 100/100 в judge.
Всъщност е точно така преди да поправят тестовете в judge ми гърмеше на секундите и дните (точно поради закръглянето). А дали се закръглява надолу или нагоре при времето нямам идея. Иначе дали TimeSpan е по-правилен начин или смятането директно нямам идея. Най-добре е да се направят тестове в judge с данни, при които да минава и по 2-та начина.
Промени го на Math.Floor и ще се получи.
с Math.Floor и на мен ми даде също 100/100, благодаря за предложението, аз ги бях направил {0:f0} и тн. за останалите елементи, но тогава получавах 50/100.
Ако някой иска да погледне и моя код: https://pastebin.com/ri5FvxWh
Другото - защо всички си обособяват 9450000000000 и 300000 като две отделни променливи - не може ли просто директно да се сметне в
ето и едно от мен без Math.Floor - https://pastebin.com/dNN5VYUX
Timespan или DateTime са конструкции за обработка на време,и в случая е удобно да се ползват защото им задаш число и формат и те автоматично го правят,и се избягват грешки като при колегите от закръгляне.Да може и без тях но са удобство макар и понякога да са малко тегави.Примерно и задача 19 за фотографката накрая пак с timespan става.На basics нас ни учиха ползваи каквото ти е дадено и ако нещо гърми МS са виновни :D