yukicoder No.405 ローマ数字の腕時計
問題概要
時計の針が何時を指しているかを求める問題。
解法
modを取って計算していく。時計の針の{"XII", "I","II","III","IIII","V","VI","VII","VIII","IX","X","XI"}を先頭から順にmod12を利用して、0,1,2.......,11とする。これをさらに、T時間後はそのmodの値にtを加えて、mod12を取ることで、針の位置がわかる。
ミス
特になし。
コード
#include <iostream> #include <string> using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) int main(void){ char d[12][5] = {"XII", "I","II","III","IIII","V","VI","VII","VIII","IX","X","XI"}; string s; cin >> s; int t; cin >> t; int mod; rep(i, 12){ if(s == d[i]) mod = i; } mod += t + 1200;//tのずれだけ足す。modが負にならないように大きめの数を足す mod %= 12;//(mod12)を取る cout << d[mod] << endl; return 0; }