面试题目——《CC150》数学与概率
面试题7.2:三角形的三个顶点上各有一只蚂蚁。如果蚂蚁开始沿着三角形的边爬行,两只或三只蚂蚁撞到一起的概率有多大?假定每只蚂蚁会随机选一个方向,每个方向被选到的几率相等,而且三只蚂蚁的爬行速度相同。
package cc150.intelligence;
public class Ants {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Ants at = new Ants();
		System.out.println(at.antsCollision(1));
	}
	public double antsCollision(int n) {
        // write code here
		if(n < 3 || n > 10000)
			return 1;
		return 1-Math.pow(0.5, (n-1));
    }
}
面试题7.3:给定直角坐标系上的两条线,确定这两条线会不会相交。
package cc150.intelligence;
public class CrossLine {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		CrossLine cl = new CrossLine();
		System.out.println(cl.checkCrossLine(0.48900,0.48900,0.32700,0.32700));
	}
	public boolean checkCrossLine(double s1, double s2, double y1, double y2) {
        // write code here
		double abs=1e-6;
		if(Math.abs(s1-s2)<abs && Math.abs(y1-y2)>abs)	//斜率相同,截距不同
			return false;
		return true;
    }
}
面试题7.4:编写方法,实现整数的乘法、减法和除法运算。只允许使用加号。
package cc150.intelligence;
public class AddSubstitution {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
	}
	public int calc(int a, int b, int type) {	//1是乘法,0是除法,-1是减法
        // write code here
		if(type == 1)
			return multiply(a,b);
		else if(type == 0)
			return divide(a,b);
		else if(type == -1)
			return minus(a,b);
		else
			return 0;
    }
	public int negate(int a){	//乘以-1,负号变正,正号变负
		int neg = 0;
		int sym = a > 0 ? -1: 1;		//判断正负
		while(a != 0){
			a += sym;		//a为正,sym为负;a为负,sym为正,相加直到0
			neg += sym;
		}
		return neg;
	}
	public int minus(int a,int b){	//只使用加法的减法,即连续加b次正1或者负1
		return a + negate(b);
	}
	public int multiply(int a,int b){	//只使用加法的乘法,b个a相加
		if(a < b)
			return multiply(b,a);
		int sum = 0;
		for(int i=Math.abs(b);i>0;i--)
			sum += a;
		if(b < 0)
			sum = negate(sum);
		return sum;
	}
	public int divide(int a,int b) throws java.lang.ArithmeticException{	//只使用加法的除法
		if(b == 0){
			throw new java.lang.ArithmeticException("ERROR");
		}
		int absa = Math.abs(a);		//先不考虑正负的问题
		int absb = Math.abs(b);
		int result = 0;
		int count = 0;
		while(result + absb <= absa){	//循环加absb,直到超过absa,计数加了几次
			result += absb;
			count++;
		}
		if((a < 0 && b < 0) || (a > 0 && b > 0))
			return count;
		else
			return negate(count);
	}
}
面试题7.5:在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分。假定正方形的上下两条边与x轴平行。
package cc150.intelligence;
public class Bipartition {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Bipartition bp = new Bipartition();
		Point[] A = {new Point(136,6278),new Point(3958,6278),new Point(3958,2456),new Point(136,2456)};
		Point[] B = {new Point(-3898,11132),new Point(7238,11132),new Point(7238,-4),new Point(-3898,-4)};
		System.out.println(""+bp.getBipartition(A,B)[0]+","+bp.getBipartition(A,B)[1]);
	}
	public double[] getBipartition(Point[] A, Point[] B) {
        // write code here
		double a_x = getCenter(A)[0];	//正方形A的中点坐标
		double a_y = getCenter(A)[1];
		double b_x = getCenter(B)[0];	//正方形B的中点坐标
		double b_y = getCenter(B)[1];
		double[] result = new double[2];
		result[0] = (a_y-b_y)/(a_x-b_x);
		double min = 10e-6;
		if(Math.abs(result[0]) < min)
			result[0] = 0;
		result[1] =a_y - result[0] * a_x;
		return result;
    }
	public double[] getCenter(Point[] p){	//返回一个正方形的中点坐标
		double[] re= {(p[2].x+p[3].x)/2.0,(p[0].y+p[3].y)/2.0};		//注意是double类型的,要除以2.0
		return re;
	}
	public static class Point {
	    int x;
	    int y;
	    public Point(int x, int y) {
	        this.x = x;
	        this.y = y;
	    }
	    public Point() {
	        this.x = 0;
	        this.y = 0;
	    }
	}
}
面试题7.6:在二维平面上,有一些点,请找出经过点数最多的那条线。
面试题7.7:有些数的素因子只有3、5、7,请设计一个算法,找出其中第k个数。
package cc150.intelligence; import java.util.LinkedList;
import java.util.Queue; public class KthNumber { public static void main(String[] args) {
// TODO 自动生成的方法存根
KthNumber kn = new KthNumber();
System.out.println(kn.findKth(0));
} public int findKth(int k) {
// write code here
if(k < 0)
return 0;
int val = 0; //存放3,5,7的倍数中的最小值
Queue<Integer> queue3 = new LinkedList<Integer>(); //存放3的倍数的队列
Queue<Integer> queue5 = new LinkedList<Integer>();
Queue<Integer> queue7 = new LinkedList<Integer>();
queue3.add(1); //一定要先放进一个1,否则v3为Integer.MAX_VALUE for(int i=0;i<=k;i++){
int v3 = queue3.size() > 0 ? queue3.peek():Integer.MAX_VALUE; //如果队列不为空的话,取得队列的头,即最小值
int v5 = queue5.size() > 0 ? queue5.peek():Integer.MAX_VALUE;
int v7 = queue7.size() > 0 ? queue7.peek():Integer.MAX_VALUE;
val = Math.min(v3, Math.min(v5, v7)); if(val == v3){ //求出了最小值,原本队列的队首要移除
queue3.remove();
queue3.add(val * 3);
queue5.add(val * 5);
}else if(val == v5){
queue5.remove();
queue5.add(val * 5);
}else if(val == v7){
queue7.remove();
}
queue7.add(val * 7);
}
return val;
} }
面试题目——《CC150》数学与概率的更多相关文章
- Java高概率面试题目—finally
		
在Java面试中关于finally的面试题目出现的概率非常高,而且一旦面试官问起绝不会是蜻蜓点水,而是会向你发起层层递进地“连环问”,并且回答这系列问题常常需要代码的辅助,可谓考验基础的面试利题.究竟 ...
 - C语言经典面试题目(转的,不过写的的确好!)
		
第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一 ...
 - 【转】React 常用面试题目与分析
		
作者:王下邀月熊链接:https://zhuanlan.zhihu.com/p/24856035来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文有一定概率为水文,怕 ...
 - 全网最全C#实习面试题目
		
整个内容是我在春招面试时候整理的一些题目,里面涵盖有网上搬运的(由于当时没有记录来源,如果有转载没标注来源,请与我联系),还有我面试到的.整个排版很乱,后期我会一步一步整理.整个内容大概快有两万字.整 ...
 - HTML/CS3相关面试题目
		
一.HTML/CS3基本面试题目. 1. 常用那几种浏览器测试? 1.1浏览器:IE,Chrome(谷歌),FireFox(火狐),Safari(苹果计算机的最新操作系统Mac OS X中的浏览器,使 ...
 - PHP面试题目搜集
		
搜集这些题目是想在学习PHP方面知识有更感性的认识,单纯看书的话会很容易看后就忘记. 曾经看过数据结构.设计模式.HTTP等方面的书籍,但是基本看完后就是看完了,没有然后了,随着时间的推移,也就渐渐忘 ...
 - 总结CSS面试题目的考察点及常见布局问题整理
		
整理网上流传的若干份面试题目,突发奇想,总结关于CSS面试题目的考察点,发现问题大多围绕几个属性和几种题目,水平有限,仅供参考. 写这个博文内心有种莫名奇妙的自我谴责感,实在不应该把面试层叠样式“应试 ...
 - 【转】asp.net c# 网上搜集面试题目大全(附答案)
		
asp.net c# 网上搜集面试题目大全(附答案) http://www.cnblogs.com/hndy/articles/2234188.html
 - 2016年Web前端面试题目汇总
		
转载: 2016年Web前端面试题目汇总 以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中未解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,欢 ...
 - 33条C#、.Net经典面试题目及答案
		
33条C#..Net经典面试题目及答案[zt] 本文集中了多条常见的C#..Net经典面试题目例如".NET中类和结构的区别"."ASP.NET页面之间传递值的几种方式? ...
 
随机推荐
- redis 集群热备自动切换sentinel配置实战
			
---恢复内容开始--- Redis SentinelSentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中一.Sentinel作用:1): ...
 - Chrome
			
一.简介 二.安装 1)离线版 http://www.google.cn/chrome/browser/thankyou.html?statcb=1&platform=win64&st ...
 - CentOS使用yum源中自带的rpm包安装LAMP环境
			
CentOS使用yum源中自带的rpm包安装LAMP环境.这是Linux下安装LAMP的环境一种最基本最简便的方式.新手可以从容安装使用. 1. 安装基础包(可选安装)yum install -y w ...
 - WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
			
刚好最近接触了一些DirectSound,就写了一个小程序练练手,可以用来添加播放基本的wav和mp3音频文件的播放器.界面只是简单的GDI,dxsdk只使用了DirectSound8相关的接口. D ...
 - java集合中List与set的区别
			
java集合中List与set的区别. List可以存储元素为有序性并且元素可以相同. set存储元素为无序性并且元素不可以相同. 下面贴几段代码感受一下: ArrayL ...
 - Swift中的willSet与didSet
			
Swift中的willSet与didSet 周银辉 在Swift语言中用了willSet和didSet这两个特性来监视属性的除初始化之外的属性值变化 无需说太多,看看下面的代码你就能很快明白的 imp ...
 - WPF Popup 控件导致被遮挡内容不刷新的原因
			
WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...
 - 【ASP.NET实战教程】ASP.NET实战教程大集合,各种项目实战集合
			
[ASP.NET实战教程]ASP.NET实战教程大集合,各种项目实战集合,希望大家可以好好学习教程中,有的比较老了,但是一直很经典!!!!论坛中很多小伙伴说.net没有实战教程学习,所以小编连夜搜集整 ...
 - Java 基础【12】 压缩与解压缩
			
Java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类. 还包括使用 DEFLATE 压缩算法(用于 ZIP 和 GZIP 文件格式)对数据进行压缩和解压缩的类. 依赖 Jd ...
 - 记一次排错,windows日志 模块 DLL C:\Windows\system32\inetsrv\aspnetcore.dll 未能加载。返回的数据为错误信息。
			
这个错误是在我本地开发环境,不是生产环境,如果是生产环境我就挂了....开发环境也痛苦啊,重装系统的话,我估计装系统+所有软件,少说也得1天..... 错误产生:重装IIS (尼玛,IIS总有一个小毛 ...