lay_contest beta round 00001 (in Japanese) B問題 月日
問題概要
m月d日をm/dとする。2016年においてa月b日からc月d日まで異なる有理数はいくつあるか。
解答内容
本来は分子と分母の組ををsetに突っ込んでいくのが想定解答かと思うけど、自分は小数で保持しました
コード
#include<iostream> #include<set> int main() { int n; std::cin >> n; int month[13] = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; for (int i = 0; i < n; i++) { int sm, sd, em, ed; std::set<double> s; std::cin >> sm >> sd >> em >> ed; for (int j = sm; j <= em; j++) { for (int k = sd; k <= month[j] && (j != em || k <= ed); k++) { s.insert(1.0 * j / k); } sd = 1; } std::cout << s.size() << std::endl; } return 0; }