AOJにはCourseという問題セットがあり、その中にジャンルごとの問題集があります。
競プロの地盤固めを目的に、この辺りの問題集を解いていきたいと思います。
ITP1に関して
ITP1はintroduction to programming1の略で、初心者向けのセットになっています。
私がやる意味はあんまりないですが、こういうのは頭から埋めたい性分なのでやっていきます><
ITP1_1_A: Hello World
judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_A (u-aizu.ac.jp)
プログラミングの慣習ということで、Hello Worldを出力する問題。
C++ならcoutで出力できます。
#include<bits/stdc++.h>
//#include<atcoder/all>
using namespace std;
//using namespace atcoder;
int main(){
cout<<"Hello World"<<endl;
}
ITP1_1_B: X Cubic
judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_B (u-aizu.ac.jp)
x^3を出力する問題。
入力はc++ならcinで受け取れます。x^3の計算はpow関数を使ってもいいですが、x*x*xと手打ちで3回かけても問題ありません。
#include<bits/stdc++.h>
//#include<atcoder/all>
using namespace std;
//using namespace atcoder;
int main(){
int x;
cin>>x;
cout<<x*x*x<<endl;
}
ITP1_1_C: Rectangle
judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_C&lang=ja (u-aizu.ac.jp)
少し数学っぽい問題です。
面積=たて*よこ
周の長さ=2*たて+2*よこ
です。これらを計算し出力するコードを書きましょう。
#include<bits/stdc++.h>
//#include<atcoder/all>
using namespace std;
//using namespace atcoder;
int main(){
int a,b;
cin>>a>>b;
cout<<a*b<<" "<<2*a+2*b<<endl;
}
ITP1_1_D: Watch
judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_D&lang=ja (u-aizu.ac.jp)
秒数を、時分秒に変換する問題です。
60秒=1分
60分=3600秒=1時間
です。
なので、秒数を3600で割って小数点を切り捨てた値が時間になります。
時間にならなかった秒数(3600で割った余り)から、60で割って小数点を切り捨てると分になります。
分にならなかった秒数(60で割った余り)が秒になります。
上記をコードに落としていきます。
#include<bits/stdc++.h>
//#include<atcoder/all>
using namespace std;
//using namespace atcoder;
int main(){
int S;
cin>>S;
int s=S%3600%60;
int m=S%3600/60;
int h=S/3600;
cout<<h<<":"<<m<<":"<<s<<endl;
}
上記の式はmod計算の関係から式変換でき、以下のようなコードにできます。
#include<bits/stdc++.h>
//#include<atcoder/all>
using namespace std;
//using namespace atcoder;
int main(){
int S;
cin>>S;
int s=S%60;
int m=S/60%60;
int h=S/60/60;
cout<<h<<":"<<m<<":"<<s<<endl;
}
こっちの方が書き方としては素直ですね。
コメント