1001. Maximum Multiple

2018-07-24  本文已影响0人  laochonger

1001. Maximum Multiple

题意:把给的一个n分解为三个数,这三个数必须分别被n整除,输出这三个书的最大乘积,若无法找出,则输出-1
思路:1 = (1/2+1/3+1/6 =) 1/4+1/4+1/2 = 1/3+1/3+1/3
也就是说,这个数一定是3或者4的倍数,需要注意的是,题目中给的范围是10^6三次方后会超出范围,所以用lld

so:

#include <cstdio>

int main() {
  int T;
  scanf("%d", &T);
  for (int cas = 1; cas <= T; ++cas) {
    int n;
    scanf("%d", &n);
    if (n % 3 == 0) printf("%lld\n", 1ll * n * n * n / 27);
    else if (n % 4 == 0) printf("%lld\n", 1ll * n * n * n / 32);
    else puts("-1");
  }
  return 0;
}
上一篇下一篇

猜你喜欢

热点阅读