BJ
パソコン甲子園2007年本選 問題12 ブラックジャック
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int i, score, num, one_count; char buf[100], *ptr; while (1) { fgets(buf, sizeof(buf), stdin); if (buf[0] == '0') break; score = one_count = 0; ptr = strtok(buf, " "); do { num = atoi(ptr); if (num == 1) one_count++; if (num < 10) score += num; else score += 10; } while ((ptr=strtok(NULL, " ")) != NULL); for (i = 0;i < one_count;i++) if (score+10 <= 21) score += 10; if (score <= 21) printf("%d\n", score); else printf("0\n"); } return 0; }
50点中25点はもらえるでしょ。多分。
半分もらえなかったらどうしよう・・・・・高校生が解くような問題なのに・・・・
っていうか
数字[半角スペース]数字[半角スペース]・・・・・・・・・が適当な数だけ続く文字列から、数値を順に取り出すのってほかに方法なかったっけ・・・・・strtok使っちまったよ・・・・
strtokがどのヘッダで宣言されてるか忘れちまってたよ・・・・・・
そりゃint型をchar*にキャストなしで入れてるけどいいの?って警告出るはずだよ・・・・・
もう寝ます・・・・おやすみなさい・・・・