几个经典的编程题
来源:互联网 发布:云计算和大数据的关系 编辑:程序博客网 时间:2024/06/13 20:38
1:一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢?
不难发现,第一年一头牛,第二年1头牛.....所以大概随着年份增长牛的数量:1,1,2,3,5,8......当前年份的牛的数量等于前两年牛的数量之和,所以:
import java.util.Scanner;
public class Test
{
public static void main(String[] args) {
for(int i=1;i<=20;i++){
System.out.println("第"+i+"年牛的数量:"+getOxs(i));
}
}
public static int getOxs(int n){
int answer = 0;
if(n>=3){
answer = 1;
for(int i=1;i<=n-2;i++){
answer += getOxs(i);
}
}else{
answer = 1;
}
return answer;
}
}
2:求出100——1000之间的所有水仙花数:
import java.util.Scanner;
public class Test
{
public static void main(String[] args) {
for(int i=100;i<=999;i++) {
int g,s,b;
b=i/100;
s=(i-b*100)/10;
g=i-b*100-s*10;
if(i==g*g*g+s*s*s+b*b*b) {
System.out.println(i);
}
}
}
} //之所以会放出这个是因为我在网上看到有大神写的求出所有的水仙花数。。
3:随便给你一个日期(例如2009-8-20),问这一天是星期几?
两种解法:直接使用calender:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class alan
{
public static void main(String[] args)
{
Calendar calender =new GregorianCalendar(2017,7, 28);
System.out.println( calender.get(Calendar.DAY_OF_WEEK)-1);
}
} //月份和日子都要减1
还有另一种算法就是你慢慢算了,定义一个年份,比如公元元年,计算给定日期距离那一天有多少年,计算其中的闰年数
4:计算1000的阶乘:
这个有意思了,:
BigInteger x = BigInteger.valueOf(1);
for(int i=2;i<=1000; i++) {
x = x.multiply(BigInteger.valueOf(i));
}
System.out.println(x); //直接使用biginteger当然可以但是与算法无关,看到一个大神的算法:
class
Test
{
public
static
void
main(String[] args)
{
int
[] digits =
new
int
[
2568
];
int
max_digit =
2567
;
digits[max_digit] =
1
;
for
(
int
d=
2
;d<=
1000
;d++)
{
for
(
int
k=max_digit; k<digits.length; k++)
digits[k] *= d;
int
k = digits.length-
1
;
while
(k>=max_digit)
{
if
(digits[k]>
10
)
{
digits[k-
1
] += digits[k] /
10
;
digits[k] = digits[k] %
10
;
if
(k-
1
<max_digit) max_digit = k-
1
;
}
k--;
}
}
for
(
int
i=max_digit; i<digits.length; i++)
{
System.out.print(digits[i]);
}
System.out.println();
}
}
大概是这样的,1000阶乘因为有2568位,可以定义一个数组,比如我计算5的阶乘,先求5!的位数为3
数组初始值为{0,0,1}
x2: {0,0,2}
x3: {0,0,6}
x4: {0,0,24} 进位=> {0,2,4}
x5: {0,10,20} 进位=> {0,12,0} 进位=> {1,2,0}
最后输出120
很有意思的题目,都是我在论坛翻出来的,可以消遣哈~
- 几个经典的编程题
- 多线程编程的几个经典问题
- 几个经典编程题(二)
- 递归函数及可变参数的几个经典编程练习
- 几个经典的游戏
- 几个经典的博弈
- 几个经典的博弈
- 几个经典的SQL
- 几个经典的博弈
- 几个经典的故事
- 几个经典的故事
- 几个经典的排序算法
- 【经典】经济学的几个经典笑话
- 经济学的几个经典故事
- 几个经典的ASP应用
- 几个经典的冷笑话
- C/C++的几个经典
- 几个经典的面试问题
- 1027:求具有abcd=(ab+cd)^2性质的四位数
- SpringCloud服务发现Eureka
- 记录git和github的常用命令
- 经典卷积神经网络LeNet-5模型
- FPGA实现图像处理中的直方图统计
- 几个经典的编程题
- Python中使用 = 赋值,使用copy()复制
- Swift 比较运算符
- C# 常用的Excel 格式化操作 及 常用颜色定义对应Excel中颜色名
- 算法的时间复杂度
- 基于linux的虚拟平台设备驱动 led架构
- 字符串操作正则表达式方法
- BootstrapValidator超详细教程
- ios入门之项目结构介绍