#include // 1〜12月の日数(2015年はうるう年ではない) static const int days_in_month[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 各桁の和を求める関数 int digit_sum(int n) { int sum = 0; while (n > 0) { sum += n % 10; n /= 10; } return sum; } int main() { int count = 0; // 1月〜12月 for (int month = 1; month <= 12; month++) { // その月の日数 int max_day = days_in_month[month]; for (int day = 1; day <= max_day; day++) { // Y(日)の各桁の和 int sum = digit_sum(day); // X(月)と等しければHAPPY DAY if (sum == month) { count++; } } } printf("%d\n", count); return 0; }