2013年3月10日

UVa 10365 - Blocks


#include <stdio.h>

int main() {
  int n, ans[1001];
  for (n = 1; n <= 1000; n++) {
    ans[n] = 2e9;
    int l, w, h;
    for (l = 1; l <= n; l++)
      if (!(n % l)) {
        int temp = n / l;
        for (w = 1; w <= temp; w++)
          if (!(temp % w)) {
            h = temp / w;
            int area = n * 6 - (l - 1) * w * h * 2 - (w - 1) * l * h * 2 - (h - 1) * l * w * 2;
            ans[n] = area < ans[n] ? area : ans[n];
          }
      }
  }
  int T;
  scanf("%d", &T);
  while (T--) {
    scanf("%d", &n);
    printf("%d\n", ans[n]);
  }
  return 0;
}

沒有留言:

張貼留言