解いた問題のソースコードと解説など。


POJ 1543 Perfect Cubes

問題文

a^3+b^3+c^3=d^3となる自然数の組をa <= b <= cかつd <= N以下で求め、dの小さい方から出力せよ。

単純に探索すればいい。TLEが怖かったのでなるべく外側ループで探索を少なくした。

int main(int argc, char **argv){
  int n; scanf("%d", &n);
  for(int d = 2; d <= n; d++){
    for(int a = 2; a < n; a++){
      if(a > d) continue;
      for(int b = a; b < n; b++){
	for(int c = b; c < n; c++){
	  int tmp = a * a * a + b * b * b + c * c * c;
	  if(d * d * d == tmp){
	    printf("Cube = %d, Triple = (%d,%d,%d)\n",
		   d, a, b, c);
	  }
	}
      }
    }
  }
  return 0;
}

TopCoderのほうがすこぶる調子悪いので、簡単な問題ばかり解いて油売ってる場合じゃないんだが。。

追記
今見たらかなり変なコードだ。

Get up! 明日のSUPER ST@R!