SRM-427 250pt: DesignCalendar
keyword
整数 C++
問題概要
Y, Dが与えられたときR=Y%Dに対してR*P=0 (mod D)を満たす最小のP(>0)を求める問題。
解法
RとDが互いに素ならP=Dが答えになることは自明。なのでRとDを最大公約数で割ってやる。もちろん問題の読解が一番難しい。
int shortestPeriod(int dayLength, int yearLength) { int r = yearLength%dayLength; return dayLength/__gcd(dayLength,r); }