タイトル
問題の説明 年と整数y dを考えると、今年のこの最初の日が月の日である尋ねるdは? 注うるう年2月29日を持っています。次の条件のいずれかが、閏年で満たす: 1 )年、100の整数倍4の整数倍である、ではない; 2 )400年の整数倍です。 入力フォーマット 入力の最初の行の整数yを含む、年間1900から2015の間で(1900および2015を含む)年を表します。 入力の2行目は整数d、1から365までの間にDを含んでいます。出力フォーマット 出力2系統、答えの整数、それぞれ、月と日付。サンプル入力 2015年 80 の出力例 。3 21は、 サンプル入力 2000 40 サンプル出力 2 。9
考え
この問題は、古典的なタイトルにC ++の紹介をすべきであり、第1判定うるう年はうるう年で、その後、うまく引くことによって、その後の年の各月の配列を、構築します。
問題の解決策
書式#include <iostreamの> 使用して 名前空間はstdを、 int型 isRun(INT年){ // 是闰年返回1 場合(年%4 == 0 &&年%100 =!0 ){ 返す 1 ; } 場合(年%400 == 0 ){ 返す 1 。 } 戻り 0 。 } int型のmain(){ int型 monthP [] = { 31、28、31、30、31、30、31、31、30、31、30、31 }。 INT monthR [] = { 31、29、31、30、31、30、31、31、30、31、30、31 }。 int型の年。 int型の日。 scanf関数(" %d個の%d個"、&年間、&日)。 int型の月=1 ; もし(isRun(年)== 1 ){ ため(int型 i = 0 ; iは< 12 ; iは++ ){ 場合(日monthR [I]> 0 ){ 月 ++ 。 日 =日- monthR [i]は、 } 他{ 破ります。 } } } 場合(isRun(年)が== 0 ){ ため(int型 i = 0 ; iは< 12;私は++ ){ 場合(日monthP [i]が> 0 ){ 月 ++ 。 日 =日- monthP [i]は、 } 他{ 破ります。 } } } のprintf(" %d個の\ n " 、月)。 printf(" %d個の\ nを" 、日)。 リターン 0 ; }