C言語でProject Euler(プロジェクト・オイラー)に挑戦 > スポンサー広告 > C言語でProject Euler 【Problem19】

    C言語でProject Euler(プロジェクト・オイラー)に挑戦 > Project Euler(プロジェクト・オイラー)【Problem16~Problem20】 > C言語でProject Euler 【Problem19】

    スポンサー広告

    スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    Project Euler(プロジェクト・オイラー)【Problem16~Problem20】

    C言語でProject Euler 【Problem19】

    Project Euler(プロジェクトオイラー)のproblem19
    C言語を使っています。

    /* Problem 19 † */
    /*
    次の情報が与えられている。

    ・1900年1月1日は月曜日である。
    ・9月、4月、6月、11月は30日まであり、2月を除く他の月は31日まである。
    ・2月は28日まであるが、うるう年のときは29日である。
    ・うるう年は西暦が4で割り切れる年に起こる。

    しかし、西暦が400で割り切れず100で割り切れる年はうるう年でない。
    20世紀(1901年1月1日から2000年12月31日)で月の初めが日曜日になるのは何回あるか。
    */


    #include <stdio.h>
    #include <conio.h>
    int uruChk(int);

    int uruChk(int yyyy)
    {
        if(yyyy % 400 != 0 && yyyy % 100 == 0)
            return 28;
        else if(yyyy % 4 == 0)
            return 29;
        else
            return 28;
    }

    int main(void)
    {
        int y, m, d;
        int i, cnt = 0;
        int d1;

        i = 0;

        for(y = 1900; y <= 2000; y++){
        for(m = 1; m <= 12; m++){
                if(m == 9 || m == 4 || m == 6 || m == 11)
                    d1 = 30;
                else if(m == 2)
                    d1 = uruChk(y);
                else
                    d1 = 31;

                for(d = 1; d <= d1; d++){
                    i++;
                    if(i % 7 == 0){
                        if(d == 1 && y >= 1901)
                            cnt++;
                        i = 0;
                    }
                }
            }
        }

        printf("%d\n", cnt);

        getch();
        return 0;
    }



    <<解>> 171


    Project Euler(プロジェクトオイラー)Problem19です。
    C言語で書いています。

    我ながら美しくないコード
    そのまんま書いただけ・・って感満載

    その上、解が合わない・・と思っていたら、求めるのは1900年からではなく、1901年からでした。

    いかにも素人なコードなんですが、どうしたらいいんでしょう。
    アドバイス等ありましたら、ぜひともご教授ください



    ☆応援お願いします☆
    にほんブログ村 IT技術ブログ C/C++へ
    にほんブログ村


    C言語でProject Euler(プロジェクト・オイラー)に挑戦C言語でProject Euler 【Problem12】>>

    C言語でProject Euler(プロジェクト・オイラー)に挑戦C言語でProject Euler 【Problem12】>>

    コメント

    • No title
    • 27.シーフード
    • 2011年06月13日 |
    • お久しぶりです!!

      パソコン甲子園近くなってきましたねーーーー!!!

      考え方は似てるけどソース乗せてみます[��ʸ��:v-91]

      #include<stdio.h>
      #include<conio.h>

      int max = 0;

      void check(int num, int uruu)
      {
      if(num == 9 || num == 4 || num == 6 || num == 11)
      max += 30;
      else if(num != 2)
      max += 31;
      else
      uruu == 1 ? max += 29 : max += 28;
      }


      int main(void)
      {
      int i, j, flg = 0;

      for(i = 1901;i <= 2000;i ++)
      for(j = 1;j <= 12;j ++)
      {
      ((i % 4 != 0) && ((i % 400 != 0) && (i % 100 == 0))) ? check(j, 0) : check(j, 1);
      if(!(max % 7))
      flg ++;
      }

      printf("%d",flg);
      getch();
      return 0;
      }

      最近暑いですね~~~
    • [編集]
    • ありがとうございます♪
    • 28.CEuler
    • 2011年06月15日 |
    • ほ~、確かに考え方は同じだけど、書き方が全然違う。
      勉強になります( ..)φメモメモ

      コメントいただくと、とても励みになります♪
      パソコン甲子園出るんですか!?
      頑張ってくださいね[��ʸ��:v-91]

    • [編集]
    • No title
    • 35.堀江伸一
    • 2012年12月19日 |
    • 英語が出来ないなら
      会津大学オンラインジャッジ。

      英語が出来るなら
      北京大学オンラインジャッジ。
      TopCoder
      Google Code Jam
      なんかもプログラマ向け練習問題が掲載入れてますよ。
      特に北京大学オンラインジャッジは問題数の多く多彩な難易度の問題がそろってることから万人向けにお勧めです。
    • [編集]

    コメントする

    トラックバック


    この記事にトラックバックする(FC2ブログユーザー)

    • まとめtyaiました【C言語でProject Euler 【Problem19】】
    • Project Euler(プロジェクトオイラー)のproblem19☆C言語を使っています。/* Problem 19 † *//*次の情報が与えられている。・1900年1月1日は月曜日である。・9月、4月、6月、11月は30日まであり、2月
    • 2012年05月13日 |
    • まとめwoネタ速neo

    カテゴリ

    最新記事

    WiMAX & WiFi & モバイル

    便利ソフトいろいろ

    最新トラックバック

    最新コメント

    カウンター

    BlogRancking



    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。