忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2026/06/22 15:37 |
予選問題に挑戦!!問題03
パソコン甲子園2007の予選問題『問題03』です。
双子素数の問題で、結構考えてしまいました。(問題は上のリンクから直接見てください)

予選問題は全10問!大丈夫か!?

今まで、何気なく『scanf』関数を使ってきましたが、その意味がなんとなくわかってきました。今日は、疲れたのでまたの機会に述べたいと思います。
とりあえずソース…

ここからソース
#include‹stdio.h›
int main(void){
int n,m,p1,q1,i,hantei;

scanf("%d",&n);
while(n!=0){ //0の入力で終了
for(m=n;m>1;m=m-1){
hantei=0;
for(i=m-1;i>1;i=i-1){
if(m%i==0){
hantei=1;
break;
}
}

if(hantei==0){
for(i=m-3;i>1;i=i-1){
if((m-2)%i==0){
hantei=1;
break;
}
}
}

if(hantei==0){
q1=m;
p1=m-2;
break;
}
}
printf("%d %d\n",p1,q1);
scanf("%d",&n);
}

return 0;
}

*** 「かめかめPHP」運営中 ***
PR

2008/01/21 23:27 | Comments(0) | TrackBack() | プログラム
予選問題に挑戦!!問題02
前回に引き続きパソコン甲子園2007の予選問題『問題02』です。

--------問題02 視力検査( 3点)--------
視力検査がありました。検査結果データを入力とし、下記の視力判定表に基づいて各判定に当てはまる人数を、左右の視力別に出力して終了するプログラムを作成してください。ただし、視力は0.1以上2.0以下の0.1刻みとし、生徒の数は40人以下とします。
視力判定表
判定 視力
A 1.1以上
B 0.6以上1.1未満
C 0.2以上0.6未満
D 0.2未満

入力
1行目 1人目の左の視力 右の視力(実数 実数;半角空白区切り)
2行目 2人目の左の視力 右の視力(実数 実数;半角空白区切り)



出力
1行目 左の視力がAの人数 右の視力がAの人数(整数 整数;半角空白区切り)
2行目 左の視力がBの人数 右の視力がBの人数(整数 整数;半角空白区切り)
3行目 左の視力がCの人数 右の視力がCの人数(整数 整数;半角空白区切り)
4行目 左の視力がDの人数 右の視力がDの人数(整数 整数;半角空白区切り)

入力例 出力例
1.0 1.2
0.8 1.5
1.2 0.7
2.0 2.0
2 3
2 1
0 0
0 0
--------------------------------------------------

今日は、子守をしながらプログラムを考えています。子どもが寝ている間に解けるかな…
もう少し、エレガントに書けたかも…。しかし、実行結果はGOOD!!

ここからソース
#include‹stdio.h›

int main(void){
	float r_eye[40],l_eye[40];
	int r_eye_num[4],l_eye_num[4],i,j;

	for(i=0;i<4;i++){
		r_eye_num[i]=0;
		l_eye_num[i]=0;
	}

	printf("Ctrl+Zで入力終了\n");
	i=0;
	while(scanf("%f %f",&l_eye[i],&r_eye[i])!=EOF){
		if(l_eye[i]>=1.1){
			l_eye_num[0]++;
		}else if(l_eye[i]>=0.6){
			l_eye_num[1]++;
		}else if(l_eye[i]>=0.2){
			l_eye_num[2]++;
		}else{
			l_eye_num[3]++;
		}

		if(r_eye[i]>=1.1){
			r_eye_num[0]++;
		}else if(r_eye[i]>=0.6){
			r_eye_num[1]++;
		}else if(r_eye[i]>=0.2){
			r_eye_num[2]++;
		}else{
			r_eye_num[3]++;
		}

		i++;
	}

	for(i=0;i<4;i++){
		printf("%d %d\n",l_eye_num[i],r_eye_num[i]);
	}

	return 0;
}

2008/01/20 14:18 | Comments(0) | TrackBack() | プログラム
予選問題に挑戦!!問題01
ちょっと長いですがパソコン甲子園2007の予選問題『問題01』です。

--------問題01 キャンディーとクラス旗( 3点)--------
3年C組では、平成19年11月10日の体育祭で使用する「クラス旗」を、将来のクラス会の時にも使うこと
にしました。そこで「クラス旗」を保管する生徒を決めるために、先生が先日差し入れてくれた大量の
キャンディーを使って次のようなゲームを行うことにしました。

1. 各生徒は生徒番号の順に1個ずつキャンディーを取ります。
2. 一巡してもキャンディーが残っていたら、最初の生徒番号の人から順々にキャンディーを取り続けます。
3. 最後のキャンディーを取った人が「クラス旗」を保管する生徒になります。

3年C組のクラスの人数は39人です。彼らの生徒番号は3C01から3C39です。例えば、キャンディーの数が50個の場合、クラス全員が1個目のキャンディーを取り終えると、キャンディーの残りは11個となります。それを再び生徒番号順に取ると、最後の1個は、3C11の生徒が取ることとなります。すなわち3C11の生徒が「クラス旗」を保管する生徒となります。キャンディーの個数を入力とし、「クラス旗」を保管する生徒の生徒番号を出力して終了するプログラムを作成してください。

入力
キャンディーの個数(1 以上 10,000 以下の整数)

出力
「クラス旗」を保管する生徒の生徒番号(半角英数字)
パソコン甲子園2007予選問題

入力例1 出力例1
50 3C11
入力例2 出力例2
5576 3C38
入力例3 出力例3
5577 3C39
入力例4 出力例4
5578 3C01
--------------------------------------------------

ん~。最近C言語から遠ざかっていたので、入力を思い出しながらやってみました。
以下、ソース。結構効率の悪い方法でやっているのかもしれません。

ここからソース
#include‹stdio.h›
int main(void){
  int ame,seito,amari;

  scanf("%d",&ame);
  seito=39;
  amari=ame%seito;

  if(amari==0){
    printf("3C39\n");
  }
  else if(amari<10){
    printf("3C0%d\n",amari);
  }
  else{
    printf("3C%d\n",amari);
  }
  return 0;
}

2008/01/17 20:53 | Comments(0) | TrackBack() | プログラム
パソコン甲子園2007
昨年も開催されました。パソコン甲子園2007

高校の教科「情報」を担当している者としては結構気になるイベントです。プログラミング部門でグランプリをとる生徒の日常生活を見てみたいです。

過去問もwebページに載せてあるので、ちょっと挑戦してみようかな…。

2008/01/17 19:58 | Comments(0) | TrackBack() | プログラム
PHPでゲーム
現在構想中なのですが、PHPを使って何かゲームが作れないものか考えています。シンプルなものであれば、いくつか考えがあるのですが…

でも、これって実際に作っている人いるんでしょうか。
もしいれば見てみたい。

*** 「かめかめPHP」運営中 ***

2008/01/09 21:27 | Comments(0) | TrackBack() | php

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]