SGU 292 Field for the Cemetery

本文提供了一道SGU ACM竞赛题目292的详细解答过程,探讨了在一个Q*C的格子中放置1*n的长方形的最大数量问题。通过对比两种放置策略,最终给出了一种基于BigInteger的解决方案。

题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=292

题意:Q*C的格子里放1*n的长方形,最多放几个?

思路:一种是横着放然后竖着放,还有一种如下:

import java.util.*;
import java.io.*;
import java.math.*;

public class Solution
{

	static Scanner in;

	public static void main(String[] args)
	{
		in=new Scanner(System.in);
                BigInteger n=in.nextBigInteger();
		BigInteger m=in.nextBigInteger();
		BigInteger k=in.nextBigInteger();
		if(n.compareTo(k)<0)
		{
			System.out.println(m.divide(k).multiply(n));
		}
		else if(m.compareTo(k)<0)
		{
			System.out.println(n.divide(k).multiply(m));
		}
		else
		{
		    BigInteger t1=n.mod(k);
		    BigInteger t2=m.mod(k);
		    BigInteger s1=k.subtract(t1);
		    BigInteger s2=k.subtract(t2);
                    BigInteger p=t1.multiply(t2);
		    BigInteger q=s1.multiply(s2);
		    BigInteger ans;
		    if(p.compareTo(q)<0) ans=p;
		    else ans=q;
		    ans=n.multiply(m).subtract(ans);
		    ans=ans.divide(k);
		    System.out.println(ans);
        }
	}
}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值