50道经典的JAVA编程题(41-45)
50道经典的JAVA编程题(41-45),苦逼的程序猿,晚上睡不着了编程吧~今天坚持做10道题!发现编程能是我快乐。。。O(∩_∩)O哈哈~能平静我烦乱的心,剩下5道题留到考试完了再做吧!该睡觉了、、、
【程序41】 MonkeyPeach.java
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一
个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中
,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
注: 递归得到还没拿桃子时的桃子数,每次得到的值必须是整数
javapackage test50; /**
* @author VellBibi
*【程序41】 MonkeyPeach.java
*题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一
*个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中
*,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
*/
public class MonkeyPeach { /**
* 获得第n个猴子还没拿桃子时的桃子数
* 最后一个猴子拿了m个桃子
* @param n
* @param m
* @return
*/
public static int getNum(int n, int m){
if(n > 5) return m*4;
else {
double ans = getNum(n+1, m) / 4.0 * 5 + 1;
if(ans%1 != 0.0 || ans == 1){//判断结果是否为整数,或者结果不为1
return 0;
}else
return (int)ans;
}
} public static void main(String[] args) {
int ans = 0;
for(int i=1; ; i++){
ans = getNum(1, i);
if(ans != 0){
System.out.println("当最后一只猴子拿走" + i + "个桃子时,海滩上原来桃子得到最小值为:");
System.out.println(ans);
break;
}
}
}
}反推数据:(验证结果是正确的)
感觉上面的实现方案有点小题大做了,要是直接验证结果的话会更快的得到答案,看代码:
javapackage test50; /**
* @author VellBibi
*【程序41】 MonkeyPeach_1.java
*题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一
*个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中
*,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
*1.程序分析:采取直接验证结果的方式
*/
public class MonkeyPeach_1 { public static boolean isRight(int n) {
for(int i=0; i<5; i++) {
if(n % 5 == 1) {
n = n - 1;
n = n - n / 5;
}else
return false;
}
return true;
} public static void main(String[] args) {
for(int n=1; ; n++) {
if(isRight(n)) {
System.out.println("海滩上原来桃子得到最小值为:" + n);
return;
}
}
} }
【程序42】 Test4.java
题目:809*??=800*??+9*??+1
其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
注:这道题很有问题啊。没有结果~~~好生郁闷,看我的两种理解吧
第一种:所有的??代表同一个数
javapackage test50; /**
* @author VellBibi
*【程序42】 Test4.java
*题目:809*??=800*??+9*??+1
*其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
*/
public class Test4 { public static void main(String[] args) {
for(int i=10; i<100 && 8*i<100 && 9*i<1000; i++){
if(809*i == (800*i + 9*i + 1)){
System.out.println("??代表的两位数:" + i);
System.out.println("809*??后的结果" + i*809);
return;
}
}
System.out.println("没有符合的数");
}
}第二种:所有的??都不同
javapackage test50; /**
* @author VellBibi
*【程序42】 Test4.java
*题目:809*??=800*??+9*??+1
*其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
*/
public class Test4_1 { public static void main(String[] args) {
for(int i=10; i<100; i++){
for(int j=10; j<100 && 8*j<100; j++){
for(int l=10; l<100 && 9*l<1000; l++){
if(809*i == 800*j + 9*l + 1){
System.out.println("809*"+i+" == 800*"+j+"+ 9*"+l+" + 1");
System.out.println("809*??后的结果" + i*809);
return;
}
}
}
}
System.out.println("没有符合的数");
}
}
【程序43】 Test5.java
题目:求0—7所能组成的奇数个数。
注:当有一位数时:有1.3.5.7这4个奇数
当有两位数时:最高为有7种(除0)选择,最低为有4(1.3.5.7为奇数的条件)种 总数为4*7
当有三位数时:最高为有7中(除0)选择,第二位有8中选择,最后一位4种(1.3.5.7) 总数 4*8*7
当有四位数时:最高为有7中(除0)选择,第三位有8中选择,第二位有8中选择,最后一位4种(1.3.5.7) 总数 4*8*8*7
*
*
*
依次类推
javapackage test50; /**
* @author VellBibi
*【程序43】 Test5.java
*题目:求0—7所能组成的奇数个数。
* 注:当有一位数时:有1.3.5.7这4个奇数
* 当有两位数时:最高为有7种(除0)选择,最低为有4(1.3.5.7为奇数的条件)种 总数为4*7
* 当有三位数时:最高为有7中(除0)选择,第二位有8中选择,最后一位4种(1.3.5.7) 总数 4*8*7
* 当有四位数时:最高为有7中(除0)选择,第三位有8中选择,第二位有8中选择,最后一位4种(1.3.5.7) 总数 4*8*8*7
*/
public class Test5 { public static void main(String[] args) {
int cup = 7*4;//二位数
int count = cup + 4;
for(int i=2; i<8; i++){
cup = 8*cup;
count = count + cup;
}
System.out.println("0—7所能组成的奇数个数:" + count);
}
}
【程序44】 TestEven.java
题目:一个偶数总能表示为两个素数之和。
javapackage test50; import java.util.Scanner; /**
* @author VellBibi
*【程序44】 TestEven.java
*题目:一个偶数总能表示为两个素数之和。
*/
public class TestEven { /**
* 判断n是不是质数
* @param n
* @return
*/
public static boolean isPrimeNumber(int n){
if(n < 2)return false; for(int i=2; i<n; i++){
if(n%i == 0)
return false;
}
return true;
} public static void main(String[] args) {
int n = new Scanner(System.in).nextInt(); if(n%2 != 0){
System.out.println("输入的不是偶数");
return;
} for(int i=2; i<n; i++){
if(isPrimeNumber(i) && isPrimeNumber(n - i)){
System.out.println(n + " = " + i + "+" + (n-i));
return;
}
}
}
}
【程序45】TestPrime9.java
题目:判断一个素数能被几个9整除
这个题貌是有问题吧,素数只能被1和自身整除啊,9都不是素数。。。无解
50道经典的JAVA编程题(41-45)的更多相关文章
- 50道经典的JAVA编程题(汇总)
这是一次不可思议的编程历程.从2013年的最后一天开始做这份题,中间连续好几天的考试,包括java考试(今天考试的JAVA编程题),直到今天完成了.挺有成就感的...废话不多说了,来电实质性的吧. 全 ...
- 50道经典的JAVA编程题(46-50)
50道经典的JAVA编程题(46-50),最后五道题了,这是一个美妙的过程,编程真的能让我忘掉一切投入其中,感觉很棒.今天下午考完微机原理了,大三上学期就这样度过了,这学期算是解放了,可是感觉我还是没 ...
- 50道经典的JAVA编程题(36-40)
50道经典的JAVA编程题(36-40),今天晚上心情压抑,不爽,继续做题,管它明天考试,我继续我的java,一个周末都在看微机原理看得的很头疼啊~明天该挂科就挂吧,不在乎了~~~ [程序36] Ar ...
- 50道经典的JAVA编程题(31-35)
50道经典的JAVA编程题(31-35),今天考完了java,在前篇博客里面贴出了题了,见:<今天考试的JAVA编程题>.考完了也轻松了,下个星期一还考微机原理呢,啥都不会,估计今天就做到 ...
- 50道经典的JAVA编程题(26-30)
50道经典的JAVA编程题(26-30),这么晚了,早点睡了要,明早8点考java祝我好运吧!!!晚安~ [程序26]Ex26.java(跳过了,好没意思的题啊)题目:请输入星期几的第一个字母来判断一 ...
- 50道经典的JAVA编程题(21-25)
50道经典的JAVA编程题(21-25),明天早上java考试了,还是坚持做题吧...这题比老师的题好多了! [程序21]TestJieCheng.java题目:求1+2!+3!+...+20!的和1 ...
- 50道经典的JAVA编程题 (16-20)
50道经典的JAVA编程题 (16-20),用了快一个下午来做这10道题了,整理博客的时间貌似大于编程的时间啊..哈哈 [程序16]Nine.java 题目:输出9*9口诀. 1.程序分析:分行与列考 ...
- 50道经典的JAVA编程题 (11-15)
50道经典的JAVA编程题 (11-15),新年的第一天,继续啦...\(^o^)/~,这50道题都跨年了啊...哈哈 [程序11] TestTN.java 题目:有1.2.3.4个数字,能组成多少个 ...
- 50道经典的JAVA编程题 (6-10)
50道经典的JAVA编程题 (6-10),今晚做了10道了,累死了...感觉难度不是很大,就是不知道是不是最好的实现方法啊!希望大神们能给指点哈... [程序6]GCDAndLCM.java 题目:输 ...
随机推荐
- 5.查找最小的k个元素(数组)
题目: 输入n个整数,输出其中最小的k个,例如输入1,2,3,4,5,6,7,8这8个数,则最小的4个是1,2,3,4(输出不要求有序) 解: 利用快速排序的partition,算导上求第k大数的思想 ...
- uEditor独立图片上传
项目中.上传图片,非常希望有一款比较兼容的查件. 网上找了一些,图片上传立刻显示的js代码,还有uploadify.都会碰到这样那样的不兼容和其它头疼的问题. 后来想,干脆就用php的上传类最干脆.但 ...
- Nginx的介绍和使用
http://blog.csdn.net/shimiso/article/details/8690897 1.什么是Nginx Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向 ...
- PJSIP在windows(xp或者win7)下的编译,编译工具是vs2008,PJSIP版本2.3
PJSIP是一个开源的SIP协议库,它实现了SIP.SDP.RTP.STUN.TURN和ICE.PJSIP作为基于SIP的一个多媒体通信框架提供了非常清晰的API,以及NAT穿越的功能.PJSIP具有 ...
- Lambda表达式 =>(msdn)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- bash把所有屏幕输出重定向到文件并保持屏幕输出的方法
输出到文件log中,并在屏幕上显示:#ls >&1 | tee log 追加输出到文件log中,并在屏幕上显示:#ls >&1 | tee -a log
- Android开发之动画(转)
activity跳转的过渡效果,很漂亮,很全 注意,切换方法overridePendingTransition只能在startActivity和finish方法之后调用. 第一个参数为第一个Activ ...
- python 中@property的使用
从14年下半年开始接触到python,自学了一段时间,后又跟别人学习了下,把基础知识基本上学过了.忽然感觉python不可能这么简单吧,就这么点东西?后来看了下书,发现还有很多的高级部分.连续看了两天 ...
- Python中的函数对象与闭包
函数在Python中是第一类对象,可以当做参数传递给其他函数,放在数据结构中,以及作为函数的返回结果. 下面的例子为接受另外一个函数作为输入并调用它 #foo.py def callf(func): ...
- I.MX6 Linux kernel LVDS backlight enable
/*************************************************************************** * I.MX6 Linux kernel LV ...