「AOJitp1」の編集履歴(バックアップ)一覧はこちら
AOJitp1 - (2014/01/12 (日) 15:00:53) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
競技プログラムになれるための例題問題集らしい。
中学生くらいから対象?
*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
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_2_C
3変数a,b,cをsortする問題。
#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
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_5_C
チェック模様を出力する問題
#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
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_5_A
数列を逆順に出力する問題
#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);
}
}
競技プログラムになれるための例題問題集らしい。
中学生くらいから対象?
*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
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_2_C
3変数a,b,cをsortする問題。
#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
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_5_C
チェック模様を出力する問題
#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
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_5_A
数列を逆順に出力する問題
#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);
}
}