intさわだんのBlack History

刹那的レジェンドになりたい。

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

第四問 四元数のかけ算 AOJ 0241

  • 計算するだけです。
  • 表見れば誰デモできます。
  • ソースどんまいです。
#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;
    }
  }
}

ちょっくらこの辺で休憩