codeforce F. Multicolored Markers

 

http://codeforces.com/contest/1029/problem/F

 

这道题真的一点都不难……………………………………………………

 

对于大矩形面积a+b,从差距最小的因数开始遍历,直到遇到第一个a、b中的任何一个,能变成一个矩形并能放在大矩形中(因为最后的大矩形的面积一定等于a+b,所以剩余空间一定可以填补),我们就找到了解。

 

 1 import java.util.*;
 2 
 3 public class A {
 4     public static void main(String[] args) {
 5         Scanner io = new Scanner(System.in);
 6         long a = io.nextLong(), b = io.nextLong(), c = a + b;
 7         long min = 0, max = 0;
 8 
 9         for (long i = (long) Math.sqrt(c); i >= 1; i--) {
10             if (c % i == 0) {
11                 min = i;
12                 max = c / i;
13 
14                 //当两个因数差距越来越大时,max的长度比min大一倍多,所以max妥妥超时
15                 for (long j = min; j >= 1; j--) {
16                     if (a % j == 0 && a / j <= max || b % j == 0 && b / j <= max) {
17                         System.out.println((min + max) * 2);
18                         return;
19                     }
20                 }
21             }
22         }
23 
24     }
25 }

 

posted @ 2019-10-23 00:11  dodoBehind  阅读(214)  评论(0编辑  收藏  举报