`
celebration
  • 浏览: 34174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

猪的安家问题解法

阅读更多
import java.io.*;

public class PigHome {
	public static void calcute_pig(){
		int num;
		//读取数据,将数据读取到数组pig[][]中,文件放在D:\arithmetic\src\pighome.txt中
		File file = new File("D:\\arithmetic\\src\\pighome.txt");
		if(!file.exists()){
			System.out.println("file is not exist!");
			return;
		}
	    FileReader fileReader = null;
		BufferedReader reader = null;
		try {
			fileReader = new FileReader(file);
		    reader = new BufferedReader(fileReader);
		    String line = "";
		    line = reader.readLine();
		    num = Integer.valueOf(line);
		    System.out.println(num);
		    int pig[][] = new int[num][2];
		    for(int i=0;i<num;i++){
		    	line = reader.readLine();
		    	String[] temp = line.split(" ");
		    	pig[i][0] = Integer.valueOf(temp[0].trim());
		    	pig[i][1] = Integer.valueOf(temp[1].trim());
		    	System.out.println(pig[i][0]+" "+pig[i][1]);
		    }
		    
		    //pighome保存猪的数量
		    int pighome = pig[0][0]+pig[0][1];
		    
		    //保存已经计算过的猪圈数的最小公倍数
	    	int multi = pig[0][0];
		    for(int i=0;i<num-1;i++){
		    	//System.out.println("multi="+multi);
		    	while(pighome % pig[i+1][0] != pig[i+1][1]){
		    		pighome += multi;
		    	}
		    	if(i == num-2){
		    		System.out.println("Andy家至少有"+pighome+"只猪!");
		    	}
		    	multi = least_common_multiple(multi,pig[i+1][0]);
		    }
		} catch (Exception e) {
			e.printStackTrace();
		}	    
	}
	
	//最小公倍数
	public static int least_common_multiple(int num1,int num2){
		return num1*num2/greatest_common_divisor(num1,num2);
	}
	
	//最大公约数
	public static int greatest_common_divisor(int num1,int num2){
		if(num1 > num2){
			int temp = num1;
			num1 = num2;
			num2 = temp;
		}
		if(num1 == num2 || num2 % num1 == 0)
			return num1;
		int temp = num2 % num1;
		while(num2 % temp != 0 && temp > 1){
			num2  =num1;
                        num1 = temp;
                        temp = num2 % num1;
		}
		return temp;
	}
	
	public static void main(String[] args){
		calcute_pig();
	}
}

 好久没有写些算法的内容了,题目不是很难,自己随手写了一个算法。

思路分析:

      首先,这是一个和余数有关的问题,按照题目的叙述,不难想到和最小公倍数有关系。但是对于求最小公倍数最好的解法就是先求出最大公约数,然后将该2个数相乘再除以他们的最大公约数即可得到最小公倍数。而求最大公约数的方法我所知道的最好的方法就是辗转相除法。

      辗转相除法还是我在小学上奥赛班的时候学到的,可能好多地方已经不叫这个名字了。其思路就是对于要计算的2个数字,先看大数能否被小数整除,如果不能就取其余数,然后在去较小数和余数,继续求他们的最小公倍数。

 

解法分析:

      先求出满足第一行,也就是文件第二行的一个猪圈数,即第二行的2个数相加之和,如例子中的4(=3+1),然后判断其是否满足下一行的数据,即是否满足除5余1.显然题目不满足,那么就将所得的数字4不停的加3(这样得到的结果对3的余数不变),知道满足第二行,可以得到16.然后处理下一行的思路一样,不过所加的数变成了15(即3和5的最小公倍数),只有这样才能是得到的结果对3和5除所得的余数不变。

 

      现在回头看看这个题目,根本就没有什么难度,只有一个简单的求2个数的最小公倍数可能稍微有点麻烦。其他的思路都非常容易想到。

分享到:
评论

相关推荐

    猪的安家(算法)

    举个例子,假如有16头猪,Andy建了3个猪圈,为了保证公平,剩下1头猪就没有地方安家了。Mary生气了,骂Andy没有脑子,并让他重新建立猪圈。这回Andy建造了5个猪圈,但是仍然有1头猪没有地方去,然后Andy又建造了7个...

    安家岭终端污水处理厂存在问题及解决对策

    安家岭终端污水处理厂作为安太堡、安家岭矿区污水外排的终端屏障,投运2年多来,受诸多因素影响运行过程中出现了一些问题,如排泥泵堵塞、桁架刮泥机脱轨等,对存在问题进行了梳理和分析,并提出了相应的解决对策。

    复杂地质条件下安家岭矿北帮边坡稳定性评价

    由于安家岭矿是露天和井工协调开采开采模式,安家岭露天矿北帮边坡在井工二矿形成了井工采动与断层破碎带双重影响,对露天矿安全有序生产带来威胁,随着井工二矿29211工作面的推进,安家岭露天矿北帮出现变形,通过采用...

    安家岭露天矿过背斜期间开采优化研究

    以安家岭露天矿过渡芦子沟背斜为例,在分析背斜对露天矿生产带来的诸多不利影响的基础上,通过分析安家岭露天矿地质条件以及煤层赋存条件,对安家岭矿开采程序、采排工作面布置、运输系统布置等方面进行了优化研究,有效...

    单身青年安家置业调研报告 2021.pdf

    单身青年安家置业调研报告 2021.pdf

    安家岭选煤厂末排矸系统平衡及降低介耗的途径

    介耗高,处理量低,混料桶位、密度波动大,分流量大,磁选机液位不稳等问题,从改造末煤弧形筛,改造4、5系统,改造磁选机来料分配箱,完善清扫水系统,更换粉原煤弧形筛筛板和板框压滤机6个方面对安家岭选煤厂进行了技术改造...

    安家岭露天矿剥离量激增后设备选型配套研究

    以安家岭露天煤矿过逆断层期间的运输设备为研究对象,综合分析了穿孔、采掘和运输设备的现有能力,通过现场调研和理论分析计算,得出了安家岭露天煤矿保证正常生产需要增加的设备型号和数量,为矿山生产提供了依据。

    安家寨煤矿可采煤层煤质特征及开采技术条件评价

    依据勘查资料分析安家寨煤矿可采煤层的煤岩特征、工业分析、工艺性能及简易可选性等煤质特征,并评价可采煤层的开采技术条件。研究结果表明:矿区内可采煤层的宏观煤岩类型主要为半亮型煤、半暗型煤,微观煤岩类型为...

    2021“新杭州人”安家居住研究报告.pdf

    2021“新杭州人”安家居住研究报告.pdf

    2021单身青年安家置业调研报告-贝壳研究院-202105.pdf

    2021单身青年安家置业调研报告-贝壳研究院-202105.pdf

    安家岭露天矿坡道形成方案优化

    以安家岭露天矿生产实践为例,在深入分析总结安家岭露天矿工作帮及采场坡道形成方案及实践经验上,通过改进优化"采掘+推土机推送"坡道的作业方式,研究量化坡道工作任务量,形成的利用抛掷爆破法爆破前冲量来减少推土机...

    中信安家幸福之家

    中信安家幸福之家

    591安家房产网站 v1.1.rar

    管理地址admin/login.ASP ... 本产品实现一键抓取海量房源,涉及13个城市(上海 北京 天津 成都 重庆 西安 沈阳 ...1、修正了被搜索引擎收录乱码问题 2、网页上出项的一些BUG 3、优化了广告系统 4、优化了房源抓取系统

    安家岭露天矿抛掷爆破剥离技术应用可行性分析

    为了确定安家岭露天煤矿是否可以采用此技术,分析了安家岭露天煤矿的地质资源条件及生产技术条件,认为安家岭露天煤矿的地质资源条件及生产技术条件适合采用抛掷爆破剥离技术。此外,抛掷爆破剥离技术较为成熟,应用此...

    008基于SSM的“安家”儿童福利院管理系统毕业设计.rar

    论文重点是对安家儿童福利院管理系统的需求进行分析,设计儿童福利院管理的功能和安家儿童福利院管理系统的数据库,对安家儿童福利院管理系统进行编码,最后进行测试。安家儿童福利院管理系统包括儿童管理、申请领养...

    让Oracle安家.pdf

    让Oracle安家.pdf

    安家岭露天矿逆断层区域边坡稳定性控制研究

    为保证边坡安全,采用赤平投影法、极限平衡法及数值模拟法对北帮、工作帮、南帮3个区域边坡进行稳定性分析。北帮断层区域放缓边坡角,南帮采取"提前掏槽开采-快速内排回填"措施;并确定了设计工作帮边坡的稳定性,提出...

    基于SSM+Mysql的“安家”儿童福利院管理系统(源码+论文+开发文档+演示视频).zip

    “安家”儿童福利院是一个为社会收容孤儿的福利院,该院需要一个管理和展示的平台,为此开发“安家”儿童福利院管理系统具有重要的实际意义。 本安家儿童福利院管理系统以Eclipse为平台,使用Java语言为后台数据库,...

    让Struts2 在NetBeans 6中安家

    让Struts2 在NetBeans 6中安家

    安家岭露天矿火区圈定

    结合安家岭露天煤矿的火区特性,提出适用于安家岭露天矿的高密度电法火区探测方法,使用该方法综合圈定了火区范围,并作出火区分布范围图。采用钻孔测温法验证了该探测方法的可行性,火区圈定结果可直接使用,为安家岭...

Global site tag (gtag.js) - Google Analytics