PCK(パソコン甲子園) 2011 予選
暇つぶし。JOI予選も近いんで、簡単な問題とかもやってみよう。
※ソースきたないです。
時間ないんで途中まで。
第一問 勉強の時間 AOJ 0238
- やるだけ
- 勉強の目標時間たてててえらい。
#include <iostream> using namespace std; int main(){ while(1){ int t; cin >>t; if(t == 0){ break; }else{ int n; int sum=0; cin >> n; for(int i = 0;i < n;i++){ int a1,a2; cin >> a1 >> a2; sum += (a2-a1); } if(sum >= t){ cout << "OK" << endl; }else{ cout << t - sum << endl; } } } }
きったないソースですいません。
第二問 カロリー計算 AOJ 0239
- やるだけ
- 食べすぎには気をつけようと思った。
#include <iostream> using namespace std; int main(){ while(1){ int n; int cc = 0; cin >> n; if(!n){ break; }else{ int d[1002][4] = {0}; int p,q,r,c; for(int i = 0;i < n;i++){ cin >> d[i][0] >> d[i][1] >> d[i][2] >> d[i][3]; } cin >> p >> q >> r >> c; for(int i = 0;i < n;i++){ if(d[i][1] <= p && d[i][2] <= q && d[i][3] <= r && d[i][1]*4 + d[i][2]*9 + d[i][3]*4 <= c){ cout << d[i][0]<<endl; cc = 1; } } } if(cc == 0) cout << "NA" << endl; } }
第三問 金利計算 AOJ 0240
- 少数の扱い苦手です。
- もっといい解き方あるかも。
#include <iostream> using namespace std; double func(int t,int y,int r){ if(t == 1){ return (1+y*r/100.0); }else{ double ttt = (1+r/100.0); for(int h = 1;h < y;h++){ ttt *= (1+r/100.0); } return ttt ; } } int main(){ while(1){ int n,y; int ans; cin >> n ; if(!n) break; cin >> y; double tmp=0; for(int i = 0;i < n;i++){ int b,t,r; cin >> b >> r >> t; if(tmp < func(t,y,r)){ ans = b; tmp = func(t,y,r); } } cout << ans << endl; } }
- 計算するだけです。
- 表見れば誰デモできます。
- ソースどんまいです。
#include <iostream> using namespace std; int main(){ while(1){ int n; cin >> n; if(!n) break; for(int i = 0;i < n;i++){ int d[8] = {0}; for(int j = 1;j <= 8;j++){ cin >> d[j]; } cout << d[1]*d[5]-(d[2]*d[6]+d[3]*d[7]+d[4]*d[8]) << " " << d[1]*d[6]+d[2]*d[5]-d[4]*d[7]+d[3]*d[8] << " " << d[1]*d[7]+d[3]*d[5]+d[4]*d[6]-d[2]*d[8] << " " << d[1]*d[8]+d[4]*d[5]-d[3]*d[6]+d[2]*d[7] << endl; } } }
ちょっくらこの辺で休憩