「AOJitp1」の編集履歴(バックアップ)一覧はこちら

AOJitp1」(2014/01/13 (月) 13:41:59) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

競技プログラムになれるための例題問題集らしい。 中学生くらいから対象? *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); } } *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); } } *Character - Sum of Numbers http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_B 1000桁までの数字の各桁の和をこたえる問題。 #include<stdio.h> #include<string.h> int main(){ char nums[1001]; while(scanf("%s",nums)!=EOF){ if(nums[0]=='0'&&nums[1]=='\0')break; int ans=0; for(int i=0;nums[i]!='\0';i++)ans+=(nums[i]-'0'); printf("%d\n",ans); } } *Character - Counting Characters http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_C 英語文章のアルファベット文字出現回数をこたえる問題。 #include<stdio.h> #include<ctype.h> int main(){ int count[27]={0}; char c; while(scanf("%c",&c)!=EOF){ c=tolower(c); if(islower(c))count[c-'a']++; } for(char i=0;i<26;i++)printf("%c : %d\n",i+'a',count[(int)i]); } *String - Finding a Word http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_A 文章中の単語出現回数を数える問題。 大文字小文字を区別しないに注意。 #include<iostream> #include<string> #include<ctype.h> int main(){ int ans=0; std::string str,word; std::cin>>word; for(int i=0;i<word.size();i++)word[i]=tolower(word[i]); while(1){ std::cin>>str; if(str=="END_OF_TEXT")break; for(int i=0;i<str.size();i++)str[i]=tolower(str[i]); if(word==str)ans++; } std::cout<<ans<<"\n"; } *String - Shuffle http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_B 文字列のシャッフルを題材にした問題 #include<iostream> #include<string> int main(){ std::string str,strL,strR; int n,s; while(1){ std::cin>>str; if(str=="-")break; std::cin>>n; while(n--){ std::cin>>s; strL=str.substr(0,s); strR=str.substr(s); str=strR+strL; } std::cout<<str<<"\n"; } } *String - Card Game http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_C 単純なカードゲームのスコアを計算する問題。 #include<iostream> #include<string> int main(){ std::string strT,strH; int scoreT=0,scoreH=0,n; std::cin>>n; while(n--){ std::cin>>strT>>strH; int v=strT.compare(strH); if(v==0){ scoreT+=1; scoreH+=1; }else if(v<0){ scoreH+=3; }else{ scoreT+=3; } } std::cout<<scoreT<<" "<<scoreH<<"\n"; } *Math - Distance http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_A 2点間の距離をこたえる問題。 #include<stdio.h> #include<math.h> int main(){ double x1,y1,x2,y2,dx,dy; scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2); printf("%lf\n",hypot(x2-x1,y2-y1)); } *Math - Triangle http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_B 3角形の2辺の長さとなす角度から面積と周長と高さをこたえる問題。 #include<stdio.h> #include<math.h> int main(){ double a,b,C,S,L,h; scanf("%lf %lf %lf",&a,&b,&C); C=C/180.0*M_PI; h=b*sin(C); S=0.5*a*h; L=a+b+sqrt(a*a+b*b-2*a*b*cos(C)); printf("%lf\n%lf\n%lf\n",S,L,h); } *Math - Standard Deviation http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_C 標準偏差を求める問題。 問題で指定されている計算方法は誤差が大きくなるしnで割るのも変な話だがまあ指定されているからしかたないか。 #include<stdio.h> #include<math.h> int main(){ while(1){ double xs[1001],m=0,v=0; int n; scanf("%d",&n); if(n==0)break; for(int i=0;i<n;i++){ scanf("%lf",&xs[i]); m+=xs[i]; } m/=n; for(int i=0;i<n;i++){ v+=(xs[i]-m)*(xs[i]-m); } printf("%lf\n",sqrt(v/n)); } }
競技プログラムになれるための例題問題集らしい。 中学生くらいから対象? 会津大学オンラインジャッジIntroduction to Programming I 解答例。 *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,s,c; while(scanf("%d%d%d",&m,&f,&r)){ if((m&f&r)==-1)break; s=m+f; c=4-(29<s)-(49<s)-(64<s)-(79<s); c-=(c==3&&49<r); if((m|f)==-1||s<30)c=5; printf("%c\n",c+'A'); } } *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); } } *Character - Sum of Numbers http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_B 1000桁までの数字の各桁の和をこたえる問題。 #include<stdio.h> #include<string.h> int main(){ char nums[1001]; while(scanf("%s",nums)!=EOF){ if(nums[0]=='0'&&nums[1]=='\0')break; int ans=0; for(int i=0;nums[i]!='\0';i++)ans+=(nums[i]-'0'); printf("%d\n",ans); } } *Character - Counting Characters http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_8_C 英語文章のアルファベット文字出現回数をこたえる問題。 #include<stdio.h> #include<ctype.h> int main(){ int count[27]={0}; char c; while(scanf("%c",&c)!=EOF){ c=tolower(c); if(islower(c))count[c-'a']++; } for(char i=0;i<26;i++)printf("%c : %d\n",i+'a',count[(int)i]); } *String - Finding a Word http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_A 文章中の単語出現回数を数える問題。 大文字小文字を区別しないに注意。 #include<iostream> #include<string> #include<ctype.h> int main(){ int ans=0; std::string str,word; std::cin>>word; for(int i=0;i<word.size();i++)word[i]=tolower(word[i]); while(1){ std::cin>>str; if(str=="END_OF_TEXT")break; for(int i=0;i<str.size();i++)str[i]=tolower(str[i]); if(word==str)ans++; } std::cout<<ans<<"\n"; } *String - Shuffle http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_B 文字列のシャッフルを題材にした問題 #include<iostream> #include<string> int main(){ std::string str,strL,strR; int n,s; while(1){ std::cin>>str; if(str=="-")break; std::cin>>n; while(n--){ std::cin>>s; strL=str.substr(0,s); strR=str.substr(s); str=strR+strL; } std::cout<<str<<"\n"; } } *String - Card Game http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_9_C 単純なカードゲームのスコアを計算する問題。 #include<iostream> #include<string> int main(){ std::string strT,strH; int scoreT=0,scoreH=0,n; std::cin>>n; while(n--){ std::cin>>strT>>strH; int v=strT.compare(strH); if(v==0){ scoreT+=1; scoreH+=1; }else if(v<0){ scoreH+=3; }else{ scoreT+=3; } } std::cout<<scoreT<<" "<<scoreH<<"\n"; } *Math - Distance http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_A 2点間の距離をこたえる問題。 #include<stdio.h> #include<math.h> int main(){ double x1,y1,x2,y2,dx,dy; scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2); printf("%lf\n",hypot(x2-x1,y2-y1)); } *Math - Triangle http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_B 3角形の2辺の長さとなす角度から面積と周長と高さをこたえる問題。 #include<stdio.h> #include<math.h> int main(){ double a,b,C,S,L,h; scanf("%lf %lf %lf",&a,&b,&C); C=C/180.0*M_PI; h=b*sin(C); S=0.5*a*h; L=a+b+sqrt(a*a+b*b-2*a*b*cos(C)); printf("%lf\n%lf\n%lf\n",S,L,h); } *Math - Standard Deviation http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_10_C 標準偏差を求める問題。 問題で指定されている計算方法は誤差が大きくなるしnで割るのも変な話だがまあ指定されているからしかたないか。 #include<stdio.h> #include<math.h> int main(){ while(1){ double xs[1001],m=0,v=0; int n; scanf("%d",&n); if(n==0)break; for(int i=0;i<n;i++){ scanf("%lf",&xs[i]); m+=xs[i]; } m/=n; for(int i=0;i<n;i++){ v+=(xs[i]-m)*(xs[i]-m); } printf("%lf\n",sqrt(v/n)); } }

表示オプション

横に並べて表示:
変化行の前後のみ表示: