ZJU 2060 解题报告
来源:互联网 发布:花卉红掌淘宝 编辑:程序博客网 时间:2024/04/29 04:03
Total Submit: 3840 Accepted Submit: 1544
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
0
1
2
3
4
5
Sample Output
no
no
yes
no
no
no
Author: Leojay
#include <stdio.h>
#include <stdbool.h>
int F(int);
bool J(int);
int main(int argc, char *argv[])
{
int n;
while (scanf("%d", &n)) (J(F(n))) ? puts("yes") : puts("no");
return 0;
}
int F(int n)
{
if (n == 0) return 7;
if (n == 1) return 11;
return F(n - 1) + F(n - 2);
}
bool J(int f)
{
return ((f % 3) ? false : true);
}
提交,结果提示:Time Limit Exceeded
看来程序效率较低,把递归改为非递归,如下:
#include <stdio.h>
#include <stdbool.h>
int F(int);
bool J(int);
int main(int argc, char *argv[])
{
int n;
while (scanf("%d", &n)) (J(F(n))) ? puts("yes") : puts("no");
return 0;
}
int F(int n)
{
int i, temp[2] = {7, 11};
if (n == 0) return 7;
if (n == 1) return 11;
for (i = 2; i <= n; i ++)
if (i % 2) temp[1] = temp[0] + temp[1];
else temp[0] = temp[0] + temp[1];
return temp[n % 2];
}
bool J(int f)
{
return ((f % 3) ? false : true);
}
再次提交,还是没有AC,于是结果前20个打印出来,看是否有规律,如下:
no
no
yes
no
no
no
yes
no
no
no
yes
no
no
no
yes
no
no
no
yes
no
可见每隔3个"no"有一个"yes",那么是不是每当 n == 4k + 2 (k >= 0) 时都有 F(n) == 3x (x >= 0) 呢?用数学归纳法试证明之:
显然 k == 0 时假设成立。设 k == m - 1 (m > 0) 时成立,则有 F(k) == F(m - 1) == F(4m - 2) == 3x(x > 0);设 F(4m - 1) == t,则F(4m) == 3x + t;F(4m + 1) == 3x + 2t;F(4m + 2) == 6x + 3t == 3y;可知 k == m 时假设也成立。
于是写代码如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
int n;
while (scanf("%d", &n) != EOF) (n % 4 == 2) ? puts("yes") : puts("no");
return 0;
}
提交,Accepted
- ZJU 2060 解题报告
- ZJU 1331 解题报告
- ZJU 1115 解题报告
- Zju 2656 Travel Around Country解题报告
- Zju 1109 Language of FatMouse 解题报告
- 牛刀杀鸡 Zju 2850解题报告
- ZJU Valid Pattern Lock 解题报告
- Zju 2513解题体会
- 2015 Multi-University Training Contest 6 solutions BY ZJU(部分解题报告)
- Zju 2741 Offside解题分析
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- 解题报告
- Zju 2740 Message System解题分析
- 写XML
- 深度探索套接字缓冲区
- C#面试题 C#试题 No.3
- Spring XML配置的十二个最佳实践
- 获得当前指定格式类型的时间
- ZJU 2060 解题报告
- 编程之暇
- 原码、反码、补码、移码
- “缺陷管理”与团队建设
- C语言常见错误分析
- Helloworld功略---java的路径配置问题
- 架构css
- 一段为图片加水印的代码
- 编程之暇~2