「aoj10000全部」の編集履歴(バックアップ)一覧に戻る

aoj10000全部 - (2012/07/07 (土) 17:10:41) のソース

10000番台は競技プログラムの問題を初めて解く方のためのチュートリアル問題しかありません。
中学生プログラマでも解ける問題だけで構成されているのが特徴です。

*10000 Hello World
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10000
ヘローワールドを出力する問題。
 #include<stdio.h>
 int main(){
	printf("Hello World\n");
 }

*10001 X Cubic
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10001
x^3を表示する問題。

 #include<stdio.h>
 int main(){
	int x;
	scanf("%d",&x);
	printf("%d\n",x*x*x);
 }


*10002 Rectangle
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10002
長方形の縦横と周計を表示する問題。

 #include<stdio.h>
 int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%d %d\n",a*b,2*a+2*b);
 }


*10003 Small, Large, or Equal
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10003
大小関係を比べて表示する問題。


 #include<stdio.h>
 int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	printf("a %s b\n",a>b?">":a==b?"==":"<");
 }


*10004 Sorting Three Numbers
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10004
3つの数を小さい順に表示する問題。

 #include<stdio.h>
 #include <algorithm>
 int main(){
	int a[3];
	scanf("%d %d %d",&a[0],&a[1],&a[2]);
	std::sort(a,a+3);
	printf("%d %d %d\n",a[0],a[1],a[2]);
 }




*10005 Print Many Hello World
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10005
1000個のヘローワールドを表示する問題。

 #include<stdio.h>
 int main(){
	int n=1000;
	while(n--)printf("Hello World\n");
 }


*10006 Print Test Cases
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10006
複数のデータセットを読み込む法方の練習問題。 

 #include<stdio.h>
 int main(){
	int n=1,p;
	while(1){
		scanf("%d",&p);
		if(p==0)break;
		printf("Case %d: %d\n",n++,p);
	}
 }


*10007 Swapping Two Numbers
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10007
2数を読み込んで小さい順に表示する問題。

 #include<stdio.h>
 int main(){
	int a,b,min,max;
	while(1){
		scanf("%d %d",&a,&b);
		if(a==0&&b==0)break;
		min=a>b?b:a;
		max=a>b?a:b;
		printf("%d %d\n",min,max);
	}
 }


*10008 A / B Problem
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10008
割り算と余りを表示する問題。
 
 #include<stdio.h>
 int main(){
	int a,b;
	scanf("%d %d",&a,&b);
	printf("%d %d %lf",a/b,a%b,(double)a/b);
 }



*10009  Circle
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10009
円の面積と演習を出す問題。

 #include<stdio.h>
 #include<math.h>
 int main(){
	double r;
	scanf("%lf",&r);
	printf("%lf %lf\n",r*r*M_PI,2.0*r*M_PI);
 }


*10010 Simple Calculator
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10010
四則演算を行う問題。



 #include<stdio.h>
 int main(){
	int a,b,c;
	char s[2];
	while(1){
		scanf("%d %s %d",&a,s,&b);
		switch(s[0]){
			case '+':
				c=a+b;
				break;
			case '-':
				c=a-b;
				break;
			case '*':
				c=a*b;
				break;
			case '/':
				c=a/b;
		}
		if(s[0]=='?')break;
		printf("%d\n",c);
	}
 }



*10011 Reversing Numbers
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10011
数列を逆順に表示する問題。


 #include<stdio.h>
 int main(){
	int n,i=0,as[101];
	scanf("%d",&n);
	for(;i<n;i++)scanf("%d",&as[i]);
	i--;
	for(;i>=0;i--)printf("%s%d",i==n-1?"":" ",as[i]);
	printf("\n");
 }


*10012 Print a Rectangle
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10012
長方形を出力する問題。



 #include<stdio.h>
 int main(){
	int h,w;
	while(1){
		scanf("%d %d",&h,&w);
		if(h+w==0)break;
		while(h--){
			for(int x=0;x<w;x++){
				printf("#");
			}
			printf("\n");
		}
		printf("\n");
	}
 }


*100013 Print a Frame
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10013
枠付きの長方形を出力する問題。

 #include<stdio.h>
 int main(){
	int h,w;
	while(1){
		scanf("%d %d",&h,&w);
		if(h+w==0)break;
		for(int y=0;y<h;y++){
			for(int x=0;x<w;x++){
				printf("%s",y==0||y==h-1||x==0||x==w-1?"#":".");
			}
			printf("\n");
		}
		printf("\n");
	}
 }



*10014 Print a Chessboard
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10014
チェック模様を出力する問題。

 #include<stdio.h>
 int main(){
	int h,w;
	while(1){
		scanf("%d %d",&h,&w);
		if(h+w==0)break;
		for(int y=0;y<h;y++){
			for(int x=0;x<w;x++){
				printf("%s",(y+x)%2==0?"#":".");
			}
			printf("\n");
		}
		printf("\n");
	}
 }



*10015 Finding Missing Cards
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10015
トランプカードの情報から持ってないトランプのデータを出力する問題。

 #include<stdio.h>
 #include<string.h>
 int main(){
	bool card[4][13];
	memset(card,true,sizeof(card));
	int n,no;
	char t,s1[2];
	scanf("%d",&n);
	while(n--){
		scanf("%s %d",s1,&no);
		t=s1[0];
		if(t=='S')t=0;
		if(t=='H')t=1;
		if(t=='C')t=2;
		if(t=='D')t=3;
		card[t][no-1]=false;
	}
	char tToN[]={'S','H','C','D'};
	for(int i=0;i<4;i++){
		t=tToN[i];
		for(int j=0;j<13;j++){
			if(card[i][j])printf("%c %d\n",t,j+1);
		}
	}
 }



 
*10016 Grading
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10016
生徒の得点データから成績を決める問題。

 #include<stdio.h>
 int main(){
	int m,t,r,s;
	char re;
	while(1){
		scanf("%d %d %d",&m,&t,&r);
		if(m==-1&&t==-1&&r==-1)break;
		if(m==-1||t==-1){
			re='F';
		}else{
			s=m+t;
			if(s>=80){
				re='A';
			}else if(s>=65){
				re='B';
			}else if(s>=50){
				re='C';
			}else if(s>=30){
				if(r>=50){
					re='C';
				}else{
					re='D';
				}
			}else{
				re='F';
			}
		}
		printf("%c\n",re);
	}
 }




*10017 How many ways?
この問題は普通に解けばn^2の計算量ですが1~nまでのすべての数を使えることを考えれば、計算量nに落とすことが出来ます。

 #include<stdio.h>
 #include <algorithm>
 int main(){
	int n,x,ans,d;
	while(1){
		scanf("%d %d",&n,&x);
		if(n==0&&x==0)break;
		ans=0;
		for(int a=1;a<=n&&a<x-2;a++){
			d=x-a;
			d=std::min(std::min(a,d),n+1)-(d+2)/2;
			if(d>0)ans+=d;
		}
		printf("%d\n",ans);
	}
 }


*10018 Toggling Cases
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10018
アルファベットの文字列を大文字を小文字に小文字を大文字にして出力する問題。
ほんの少しだけショートコードで遊んでみる。

 #include<stdio.h>
 int main(){
	int t;
	while(1){
		t=getchar();
		putchar(t+('A'<=t&&t<='Z')*32-('a'<=t&&t<='z')*32);
		if(t=='\n')break;
	}
 }


*10019 Sum of Numbers
各桁の数値を足していく問題。
ショートコードは苦手なのであまりコードが短くならない。

 #include<stdio.h>
 int main(){
	int x,s;
	while((x=getchar()-'0')!=0){
		s=x;
		while((x=getchar())!='\n'){
			s+=x-'0';
		}
		printf("%d\n",s);
	}
 }


*10020 Counting Characters
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=10020
アルファベットの出現数を数える問題。

 #include<stdio.h>
 #include<string.h>
 int main(){
	int a[26];
	char ch;
	memset(a,0,sizeof(a));
	while(scanf("%c",&ch)!=EOF){
		if('a'<=ch&&ch<='z')a[ch-'a']++;
		if('A'<=ch&&ch<='Z')a[ch-'A']++;
	}
	for(int i=0;i<26;i++)printf("%c : %d\n",i+'a',a[i]);
 }