Entries

スポンサーサイト (この記事を編集する[管理者用])

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

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2252-fd5c7dd2
この記事にトラックバックする(FC2ブログユーザー)

February 2012 Cook-off 4問目 - Daily Train (この記事を編集する[管理者用])

Source

codechef February 2012 Cook-off 4問目
Problem Statement

問題概要

列車の席は6つの席ごとにグループになっていて,各車両の空席状況が与えられる.
x人分だけ,同じグループになっている席を買いたい.
パターン数を求める問題.

解法

やるだけ.

C言語のスパゲッティなコード
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

char *hoge = "111122223333444455556666777788889999998877665544332211";

int main(){
  int i,j,k,l,m,ok;
  int x,n;
  int comb[100][100];
  char in[100];
  int res;

  rep(i,100) comb[0][i] = 0;
  rep(i,100) comb[i][0] = 1;
  REP(i,1,100) REP(j,1,100) comb[i][j] = comb[i-1][j-1] + comb[i-1][j];

  while(scanf("%d%d",&x,&n)==2){
    res = 0;
    while(n--){
      scanf("%s",in);
      REP(k,'1','9'+1){
        ok = 0;
        rep(i,54) if(hoge[i]==k && in[i]=='0') ok++;
        res += comb[ok][x];
      }
    }
    printf("%d\n",res);
  }

  return 0;
}

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2252-fd5c7dd2
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。