プログラムの実行結果は以下の通り。
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;
}