倒水问题

package day131213;

public class WaterCollectionABC {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 7 3 7-3=4 7-3-3=1 7-(3-1)=5; // 3-(7-5)=1;
		//

		// a=5 b=3 模(mu):2 模差(md)5-(3-2)=4 //3-(5-4) =2;

		System.out.println(ifFulledC(1234567,7654321, 9999999));
		
		//6666673
		//246919

	}

	public static boolean ifFulledC(int a, int b, int c) {

		if (a <= 0 || a > 1000000000 || b <= 0 || b > 1000000000 || c <= 0
				|| c > 1000000000 || (a%b>c&&b%a>c))
			return false;

		else {

			if (a < b) {
				int temp = a;
				a = b;
				b = temp;

			}

			if (a == b || a % b == 0) {
				System.err.println("ok");
				return (c % b == 0);
			}

			int mu = a % b;//6666673
			int md = a - (b - mu);//246919

			if (mu < md) {
				int temp = mu;
				mu = md;
				md = temp;
			}

			// int times= c/md;

			for (int i = 0; i <= (c / md)+1; i++) {
				for (int j = 0; j <= (c /mu)+1; j++) {
					for (int k = 0; k <= (c / b)+1; k++) {
						for (int l = 0; l <= (c / a)+1; l++) {
							
							if (i * md + j * mu + k * b + l * a == c)
								
								return true;
						}
					}
				}

			}

		}

		return false;
	}
}

做了半天,都没有通过这个题。说用例( 执行测试用例失败!NO! 1234567 7654321 9999999 ok ok ok ok)没通过。不知道是不是我分析错误了。。。纠结中。

庞果网的最低难度题

题目如下;

有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。

我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。

可以进行的操作是:

  1. 把一个容器灌满;
  2. 把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸);
  3. 用一个容器的水倒入另外一个容器,直到倒出水的容器空或者倒入水的容器满。
    问是否能够通过有限次操作,使得水缸最后恰好有C升水。


输入:三个整数A, B, C,其中 0 < A , B, C <= 1000000000

输出:0或1,表示能否达到要求。


函数头部:

c语言:1表示可以,0表示不可以

int can(int a,int b,int c);

c++语言: true表示可以,false表示不可以

bool can(int a,int b,int c);

java语言:true表示可以,false表示不可以

public class Main {

    public static boolean can(int a,int b,int c);

}



我的代码:

答题说明
main函数方便自行编译测试,可不完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值