杭电ACM OJ 1021 Fibonacci Again 斐波那次数列 发现规律 简化操作

来源:互联网 发布:数据挖掘 股票预测 编辑:程序博客网 时间:2024/05/29 07:05
017新生赛(点击红色的Registerring)

Fibonacci Again

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 64800    Accepted Submission(s): 30092


Problem Description
There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2).
 

Input
Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000).
 

Output
Print the word "yes" if 3 divide evenly into F(n).

Print the word "no" if not.
 

Sample Input
012345
 

Sample Output
nonoyesnonono
翻译:就是这个公式,用递归取做。给一个数字代表求出这个公式的第几位即f(5)比如说。再判断能否整除3,如果可以,输出yes
核心:直接硬做也可以做出来,不过可能超时。我们需要找到规律。第一位7,第二位11.可以看成
3+4
3+4+4
加起来就是3+3+4+4+4
其目的是整除3
可以看成
4
4 4
4 4 4
再进一步
1
1 1
1 1 1
就是
1
2
3
5
8
这种规律。很方便就可以求出来
上代码
//找规律法int circle2(int n) {    int sum = 0;    if (n == 0) {        return 1;    }    if (n == 1) {        return 2;    }    return circle2(n - 1) + circle(n - 2);}boolean getResult2() {    int result = circle2(this.n);    return isOk(result);}
下面贴上包含笨办法的完整代码
public class FibonacciAgain1021 {    int n;    FibonacciAgain1021(int n) {        this.n = n;    }    //递归:暴力法,不过应该超时    int circle(int n) {        if (n == 0) {            return 7;        }        if (n == 1) {            return 11;        }        int num;        num = circle(n - 1) + circle(n - 2);        return num;    }    boolean isOk(int result) {        return (result % 3) == 0;    }    boolean getResult() {        int result = circle(this.n);        return isOk(result);    }    //找规律法    int circle2(int n) {        int sum = 0;        if (n == 0) {            return 1;        }        if (n == 1) {            return 2;        }        return circle2(n - 1) + circle(n - 2);    }    boolean getResult2() {        int result = circle2(this.n);        return isOk(result);    }    public static void main(String[] args) throws Exception {        FibonacciAgain1021 fibonacciAgain1021 = new FibonacciAgain1021(2);//3在试一下        boolean result = fibonacciAgain1021.getResult2();        System.out.println(result + "");    }}
(一个acm题,你必须先用暴力法去试试,如果连暴力法都不会,就不要谈更高级优雅的方法了。就算侥幸套算法框架套出来了,对他的理解依然只有皮毛而已)
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买家号违规了怎么办 淘宝违规扣分了怎么办 快递包裹出现异常怎么办 农行卡状态异常怎么办 农行卡无法使用怎么办 牙根下面有囊肿怎么办 qq登录异常是怎么办 马云创业失败怎么办 身上还有20块钱怎么办 如果一分钱都没想创业怎么办 投资云联惠的钱怎么办 钱宝网投资的钱怎么办 投资钱要不回来怎么办 面对选择总纠结怎么办 如果客户说没钱怎么办 淘宝客订单失效怎么办 喜宝米粉不含铁怎么办 淘宝直播一直卡怎么办 淘宝直播很卡怎么办 贷款没办法还怎么办 淘宝直播间被主播禁言了怎么办? 淘宝直播声音小怎么办 荔枝直播间被禁言了怎么办 火山直播间被禁言了怎么办 ipad1版本太低怎么办 微信屏蔽链接怎么办 ipadmini太卡了怎么办 ipad还原死机了怎么办 iphone6密码忘了怎么办 淘宝店被屏蔽怎么办 支付宝恶意投诉怎么办 动态评分太低怎么办 动态评分一直掉怎么办 微博抢红包黑了怎么办 wish买家恶意退款怎么办 淘宝发货后退款怎么办 淘宝买家没签收怎么办 淘宝买家拒绝签收怎么办 博客忘记登录名怎么办 夏天玩手机发热怎么办 微博分享失败怎么办