プログラムの実行結果は以下の通り。
Find 8月4日 から 8月28日まで
プログラムのソースは以下の通り。
#include "puzutl.h" void check_sumdays( int iday) { int istart = iday; // 開始日を記憶しておく int sum = 0; while( iday <= 31) { // 8月は31日まで sum += iday; if( sum > 400) return; if( sum == 400) { ps( "Find 8月%d日 から 8月%d日まで\n", istart, iday); } iday++; } // 念のため9月にまたがる部分も調べてみる。 iday = 1; // 9月1日から追加 while( iday <= 30) { // 9月は最大30日まで sum += iday; if( sum > 400) return; if( sum == 400) { ps( "Find 8月%d日 から 9月%d日\n", istart, iday); } iday++; } } int main( int argc, cstring argv[]) { for( int iday=1; iday<= 31; iday++) { // 8月1日から31日まで調べる check_sumdays( iday); // 合計が400になるものがあるか } return 0; }