第三届蓝桥杯预赛java组第一题黄金队列
2013-03-17 23:34
323 查看
Question:
黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子....
黄金分割数是个无理数,也就是无法表示为两个整数的比值。0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,我们取它的一个较精确的近似值:0.618034
有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!
1 3 4 7 11 18 29 47 .... 称为“鲁卡斯队列”。它后面的每一个项都是前边两项的和。
如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!
你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。
请写出该比值。格式是:分子/分母。比如:29/47
答案写在“解答.txt”中,不要写在这里!
Answer:
package com.test1;
public class First {
private static double result;
public static void main(String[] args)
{
int i[]=new int[100];
String string=" ";
i[0]=1;i[1]=3;
for(int j=2;j<30;j++)
{
i[j]=i[j-1]+i[j-2];
result=(double)i[j-1]/i[j];
string=new Double(result).toString();
System.out.println(i[j-1]+"/"+i[j]+"="+string);
//System.out.println(string);
}
}
}
Run Answer:
3/4=0.75
4/7=0.5714285714285714
7/11=0.6363636363636364
11/18=0.6111111111111112
18/29=0.6206896551724138
29/47=0.6170212765957447
47/76=0.618421052631579
76/123=0.6178861788617886
123/199=0.6180904522613065
199/322=0.6180124223602484
322/521=0.6180422264875239
521/843=0.6180308422301305
843/1364=0.6180351906158358
1364/2207=0.6180335296782963
2207/3571=0.6180341640996919
3571/5778=0.6180339217722395
5778/9349=0.6180340143330838
9349/15127=0.6180339789779864
15127/24476=0.6180339924824317
24476/39603=0.6180339873241926
39603/64079=0.6180339892944646
64079/103682=0.6180339885418877
103682/167761=0.6180339888293465
167761/271443=0.6180339887195471
271443/439204=0.6180339887614867
439204/710647=0.6180339887454671
710647/1149851=0.6180339887515861
1149851/1860498=0.6180339887492489
我想问:为什么j<30呢,j<40,j<50呢?就不可以吗?我试了一下,j<50的运行结果会出现负数?为什么?还有,最后的结果是?好像有挺多的啊?求赐教啊。。。
答案2:
import java.io.FileWriter;
import java.io.IOException;
public class Num1 {
/**
* @param args
* @throws IOException
*/
public static
void main(String[] args) throws IOException {
// TODO Auto-generated method stub
double a=1,b=3;
double c;
while(!(a/b<=0.6180344&&a/b>=0.6180335)){
c=a+b;
a=b;
b=c;
}
System.out.print(a+"/"+b);
FileWriter fw=new FileWriter("E:\\寒假学习\\软件大赛\\2012Java本科\\1\\解答.txt");
fw.write(String.valueOf((int)a)+"/"+String.valueOf((int)b));
fw.flush();
fw.close();
}
}
运行结果只有一个:
1364/2207
不知道哪个才是正确的。。。
黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处,墙上的画像一般也挂在房间高度的0.618处,甚至股票的波动据说也能找到0.618的影子....
黄金分割数是个无理数,也就是无法表示为两个整数的比值。0.618只是它的近似值,其真值可以通过对5开方减去1再除以2来获得,我们取它的一个较精确的近似值:0.618034
有趣的是,一些简单的数列中也会包含这个无理数,这很令数学家震惊!
1 3 4 7 11 18 29 47 .... 称为“鲁卡斯队列”。它后面的每一个项都是前边两项的和。
如果观察前后两项的比值,即:1/3,3/4,4/7,7/11,11/18 ... 会发现它越来越接近于黄金分割数!
你的任务就是计算出从哪一项开始,这个比值四舍五入后已经达到了与0.618034一致的精度。
请写出该比值。格式是:分子/分母。比如:29/47
答案写在“解答.txt”中,不要写在这里!
Answer:
package com.test1;
public class First {
private static double result;
public static void main(String[] args)
{
int i[]=new int[100];
String string=" ";
i[0]=1;i[1]=3;
for(int j=2;j<30;j++)
{
i[j]=i[j-1]+i[j-2];
result=(double)i[j-1]/i[j];
string=new Double(result).toString();
System.out.println(i[j-1]+"/"+i[j]+"="+string);
//System.out.println(string);
}
}
}
Run Answer:
3/4=0.75
4/7=0.5714285714285714
7/11=0.6363636363636364
11/18=0.6111111111111112
18/29=0.6206896551724138
29/47=0.6170212765957447
47/76=0.618421052631579
76/123=0.6178861788617886
123/199=0.6180904522613065
199/322=0.6180124223602484
322/521=0.6180422264875239
521/843=0.6180308422301305
843/1364=0.6180351906158358
1364/2207=0.6180335296782963
2207/3571=0.6180341640996919
3571/5778=0.6180339217722395
5778/9349=0.6180340143330838
9349/15127=0.6180339789779864
15127/24476=0.6180339924824317
24476/39603=0.6180339873241926
39603/64079=0.6180339892944646
64079/103682=0.6180339885418877
103682/167761=0.6180339888293465
167761/271443=0.6180339887195471
271443/439204=0.6180339887614867
439204/710647=0.6180339887454671
710647/1149851=0.6180339887515861
1149851/1860498=0.6180339887492489
我想问:为什么j<30呢,j<40,j<50呢?就不可以吗?我试了一下,j<50的运行结果会出现负数?为什么?还有,最后的结果是?好像有挺多的啊?求赐教啊。。。
答案2:
import java.io.FileWriter;
import java.io.IOException;
public class Num1 {
/**
* @param args
* @throws IOException
*/
public static
void main(String[] args) throws IOException {
// TODO Auto-generated method stub
double a=1,b=3;
double c;
while(!(a/b<=0.6180344&&a/b>=0.6180335)){
c=a+b;
a=b;
b=c;
}
System.out.print(a+"/"+b);
FileWriter fw=new FileWriter("E:\\寒假学习\\软件大赛\\2012Java本科\\1\\解答.txt");
fw.write(String.valueOf((int)a)+"/"+String.valueOf((int)b));
fw.flush();
fw.close();
}
}
运行结果只有一个:
1364/2207
不知道哪个才是正确的。。。
相关文章推荐
- 黄金队列,汉诺塔,奇怪的比赛,第一个数字,割圆,最大数,矩形的交集和并集,趣味算式(第三届蓝桥杯Java本科预赛试题)
- 第三届蓝桥杯java黄金队列
- 夺冠概率--第三届蓝桥杯预赛真题 c++本科组 第9题(我用java做的)
- 取球游戏--第三届蓝桥杯预赛真题 c++本科组 第10题(我用java做的)
- 第三届蓝桥杯预赛java组第四题-低碳生活
- 密码发生器--第三届蓝桥杯预赛真题 c++本科组 第8题(我用java做的)
- 第三届蓝桥杯java本科组预赛第7题
- 第三届蓝桥杯预赛真题 Java高职第九题-- 密码发生器
- 第三届蓝桥杯java预赛第4题
- 第三届蓝桥杯预赛java组第二题比酒量
- 第三届蓝桥杯预赛java组第三题
- 第三届蓝桥杯java预赛第3题汉诺塔
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][黄金连分数]
- 趣味算式--第三届蓝桥杯预赛真题 java本科组 第9题
- 分酒--第三届蓝桥杯预赛真题 java本科组 第10题
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][三部排序]
- 2014年第五届蓝桥杯预赛题目JAVA软件开发高职高专组有理数类
- 2014年第五届蓝桥杯预赛题目JAVA软件开发高职高专组7
- 蓝桥杯 算法提高 队列操作(Java解题)
- [JAVA][2013蓝桥杯预赛 JAVA本科B组][错误票据]