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]); }