AOJ ITP1 3.Repetitive Processing
はい。
http://judge.u-aizu.ac.jp/onlinejudge/topic.jsp?cid=ITP1#problems/ITP1_3
A.Print Many Hello World
1000 個の "Hello World" を出力する
python2
for i in range(1000):print'Hello World'
C++11
#include<bits/stdc++.h> #include<vector> #include<algorithm> using namespace std; int main(){ for(int i=0;i<1000;i++){ printf("Hello World\n"); } return 0; }
1000回をpythonなら文字列に*1000とかでも1000回分出力させたり出来ましたけど改行を工夫しないとならなかったので単純なforで処理しました。
B.Print Test Cases
1つの整数 x を読み込み、それをそのまま出力する
python2
import sys for i,ws in enumerate(sys.stdin, 1): w = ws[:-1] if w =='0': break print 'Case %d: %s' % (i, w)
C++11
#include<bits/stdc++.h> #include<vector> #include<algorithm> using namespace std; int main(){ int s,t=1; while(true){ scanf("%d",&s); if(s==0) break; printf("Case %d: %d\n",t,s); t++; } return 0; }
pythonのenumerateは練習不足かあまり使ったこと無いし、場面にもよるんですけどこういう時はすごい便利です。
C.Swapping Two Numbers
2つの整数 x, y を読み込み、それらを値が小さい順に出力
python
while 1: x,y=map(int,raw_input().split()) if x==y==0: exit() else: print min(x,y),max(x,y)
C++11
#include<bits/stdc++.h> #include<vector> #include<algorithm> using namespace std; int main(){ int x,y; while(true){ scanf("%d %d",&x,&y); if(x==y && x==0){ break; }else if(x>y){ printf("%d %d\n",y,x); }else{ printf("%d %d\n",x,y); } } return 0; }
swapという言葉からは大小によってはx,yの中身を入替えないといけないように誤解しそうになったけど、中身を入れ替える必要はなくて出力する順番を変えれば大丈夫だった。
D.How Many Divisors?
3つの整数 a、b、c を読み込み、a から b までの整数の中に、c の約数がいくつあるかを求める
a,b,c=map(int,raw_input().split()) i=0 for x in xrange(a,b+1): if c%x==0: i+=1 print i
C++11
#include<bits/stdc++.h> #include<vector> #include<algorithm> using namespace std; int main(){ int a,b,c,ans=0; scanf("%d %d %d",&a,&b,&c); for(int i=a;i<=b;i++){ if(c%i==0) ans++; } printf("%d\n",ans); return 0; }
特に何か特別な手法はなく%で余りの有り無しを見る方法で処理になるようです。他の方の回答を全て確認したわけではありませんが。。。