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

AOJitp1 - (2014/01/12 (日) 15:13:53) の編集履歴(バックアップ)


競技プログラムになれるための例題問題集らしい。
中学生くらいから対象?


Getting Started - X Cubic

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_B
xが一つ与えられるのでx^3を返せ。

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

Getting Started - Rectangle

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_C
縦Acm 横Bcmの長方形の周長と面積を求める問題。

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


Branch on Condition - Small, Large, or Equal

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_2_A
整数a bの大小関係をこたえる問題。

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



Branch on Condition - Range

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_2_B
3つの数a,b,cがa<b<cを満たすならYesと返す問題。

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


Branch on Condition - Sorting Three Numbers


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


Repetitive Processing - Print Many Hello World

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_3_A
1000個のHello Worldを出力する問題。

#include<stdio.h>
int main(){
	for(int i=0;i<1000;i++){
		printf("Hello World\n");
	}
}


Repetitive Processing - Print Test Cases

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_3_B
複数入力ある問題に慣れるための練習問題。

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


Repetitive Processing - Swapping Two Numbers

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_3_C
連続して2数の組が与えられるので2数を一行ずつ小さいほうを右に大きいほうを左に配置して出力せよ。

#include<stdio.h>
int main(){
 	int a,b,t;
	while(scanf("%d %d",&a,&b)!=EOF){
		if(a==0&&b==0)break;
		if(a>b)t=a,a=b,b=t;
		printf("%d %d\n",a,b);
	}
}



Computation - A / B Problem

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_4_A
2数a,bが与えられるのでa//b a%b a/bをこたえよという問題。


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



Computation - Circle

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_4_B
半径rの円の面積と円周を答えよ。

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



Computation - Simple Calculator

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_4_C
単純な四則演算を処理する問題。

#include<stdio.h>
int main(){
	int a,b,c;
 	char op;
	while(scanf("%d %c %d",&a,&op,&b)!=EOF){
		if(op=='?')break;
		if(op=='+')c=a+b;
		if(op=='-')c=a-b;
		if(op=='*')c=a*b;
 		if(op=='/')c=a/b;
		printf("%d\n",c);
	}
}


Nested Controls I - Print a Rectangle

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_5_A
指定されたサイズの長方形を出力する問題。

#include<stdio.h>
int main(){
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF){
		if(a==0&&b==0)break;
		for(int i=0;i<a;i++){
			for(int j=0;j<b;j++){
				printf("#");
 			}
			printf("\n");
		}
		printf("\n");
	}
}


Nested Controls I - Print a Rectangle

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_5_A
枠付き長方形を出力する問題。

#include<stdio.h>
int main(){
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF){
 		if(a==0&&b==0)break;
		for(int i=1;i<=a;i++){
		for(int j=1;j<=b;j++){
 				printf("%s",i==1 || i==a || j==1 || j==b?"#":".");
			}
			printf("\n");
		}
		printf("\n");
	}
}



Nested Controls I - Print a Chessboard


#include<stdio.h>
int main(){
	int a,b;
 	while(scanf("%d %d",&a,&b)!=EOF){
		if(a==0&&b==0)break;
		for(int i=0;i<a;i++){
			for(int j=0;j<b;j++){
				printf("%s",(i+j)%2?".":"#");
			}
			printf("\n");
		}
		printf("\n");
	}
}


Nested Controls I - Print a Rectangle


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



Array - Finding Missing Cards

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_6_B
足りないカードを出力する問題。

#include<stdio.h>
#include<string.h>

int main(){
	int cards[4][14],n,t,num;
	char c,ws[5]="SHCD";
	memset(cards,0,sizeof(cards));
	scanf("%d",&n);
 	while(n--){
	scanf("%*c%c",&c);
 		scanf("%d",&num);
		if(c=='S')t=0;
		if(c=='H')t=1;
		if(c=='C')t=2;
		if(c=='D')t=3;
 		cards[t][num]=1;
	}
 	for(int i=0;i<4;i++){
		for(int j=1;j<=13;j++)if(cards[i][j]==0)printf("%c %d\n",ws[i],j);
	}
}







Array - Official House

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_6_C
大学の公舎4棟の出入りを管理する問題。

#include<stdio.h>
#include<string.h>
int main(){
	int count[4][3][10],n,b,f,r,v;
	memset(count,0,sizeof(count));
 	scanf("%d",&n);
	while(n--){
		scanf("%d %d %d %d",&b,&f,&r,&v);
		count[b-1][f-1][r-1]+=v;
	}
	for(int i=0;i<4;i++){
		for(int j=0;j<3;j++){
 			for(int k=0;k<9;k++)printf(" %d",count[i][j][k]);
			printf(" %d\n",count[i][j][9]);
		}
		if(i!=3)printf("####################\n");
	}
}




Nested Controls II - Grading

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_7_A
大学の試験結果の振り分けをする問題。

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





Nested Controls II - How many ways?

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_7_B
1からnまでの数を重複なく3個足してsを作るとき何通りの方法があるか答える問題。


#include<stdio.h>
int main(){
	int n,s;
	while(scanf("%d %d",&n,&s)!=EOF){
		if(n==0&&s==0)break;
		int ans=0;
 		for(int a=1;a<n && 3*a<=s;a++){
			for(int b=a+1; b<n && a+2*b<=s;b++){
				int c=s-a-b;
				if(c<=b)break;
				if(n<c)continue;
 				ans++;
			}
		}
		printf("%d\n",ans);
	}
}





Nested Controls II - Spreadsheet

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_7_C
表計算ソフトの足し算機能を題材にした問題。

#include<stdio.h>
#include<vector>
int main(){
 	int r,c,n;
	std::vector<int> colSum;
	scanf("%d %d",&r,&c);
	for(int i=0;i<c;i++)colSum.push_back(0);
	while(r--){
		int rowSum=0;
		for(int j=0;j<c;j++){
 			scanf("%d",&n);
			printf("%d ",n);
			rowSum+=n;
			colSum[j]+=n;
		}
		printf("%d\n",rowSum);
	}
	int rowSum=0;
	for(int j=0;j<c;j++){
		printf("%d ",colSum[j]);
		rowSum+=colSum[j];
	}
	printf("%d\n",rowSum);
}


Character - Toggling Cases

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_A
英小文字を大文字に大文字を小文字に変えて出力する問題。

#include<stdio.h>
#include<ctype.h>

int main(){
	char c;
	while(scanf("%c",&c)!=EOF){
		if(islower(c)){
			c=toupper(c);
		}else if(isupper(c)){
			c=tolower(c);
		}
		printf("%c",c);
	}
}