码迷,mamicode.com
首页 > 其他好文 > 详细

#1005 Number Sequence

时间:2015-08-30 15:37:46      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hdu.edu.cn/showproblem.php?pid=1005

 

一看以为只是个普通的递归调用,写完如下

 1 #include<stdio.h>
 2 
 3 int A, B;
 4 int f(int n)
 5 {
 6     if (n == 1 || n == 2)
 7     {
 8         return 1;
 9     }
10     return (A*f(n - 1) + B*f(n - 2)) % 7;
11 }
12 int main()
13 {
14     int n;
15     while (scanf("%d %d %d", &A, &B, &n) && A!=0 && B!=0 && n!=0)
16     {
17         printf("%d\n", f(n));
18     }
19     return 0;
20 }

结果一提交报错Memory Limit Exceeded超出内存限制,慌了,没遇到过。

 

题目的n输入范围是0到一亿,这是一个相当大的数字,递归那么多次必然要超出内存限制了。

百度了一下发现在17行处改为

printf("%d\n", f(n%49));

就能AC了,并不能理解,再看看其他人的答案,连递归都不见了,我是不是错过了什么。。。我再找找原因。

#1005 Number Sequence

标签:

原文地址:http://www.cnblogs.com/makejeffer/p/4770930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!