PostAddsense


ExerciseMachine Topcoder



public class ExerciseMachine {
    public int getPercentages(String time) {
        int total = Integer.parseInt(time.substring(0, 2)) * 60 * 60
            + Integer.parseInt(time.substring(3, 5)) * 60
            + Integer.parseInt(time.substring(6, 8));
        int count = 0;
        for (int i = 1; i <= 99; i++)
            if (total*i % 100 == 0)
                count++;

        return count;
    }
}


Problem

매초마다 운동 기구에 있는 펌웨어의 함수가 호출되고 이 함수는 전체 운동량의 퍼센트를 출력해야 한다. 운동 기구의 화면은 소수점을 표시하지 못하므로 소수점이 붙지 않는 퍼센트만 출력해야 한다. 기구는 0% 또는 100%를 출력해서는 안된다.


Explanation

매초마다 workout time에 대한 퍼센트를 출력한다. %에 소수점(decimal point)이 붙으면 출력하지 않는다. 따라서 1%, 2%, ... , 100% 로 출력하게 되고 각 퍼센트가 소수점이 나온다면(0.1%, 0.01% 등등) 해당 값은 출력할 수가 없다. %값을 얻으려면 1/100을 곱해줘야 한다. 즉, 소수점 둘째자리(0.00)가 최대이므로 mod 100을 해 나머지가 0이면 출력한다.

위 코드의 공식은 gdd(s,100) - 1이다.


References