寒假不虚度,青春不可浪费。一天一题,保证手感不冰凉。

上题目

 首先看到这个题目,康康我的第一想法就是采用递归去作,直接求出20190324这一项,这不有手就行,所以WA了,这是错误示范,先说答案——4659
#include<iostream> using namespace std; long long dg(int y) { if(y<=3) return
1; else return dg(y-1)+dg(y-2)+dg(y-3); } int main() { int n=20190324;
cout<<dg(n); return 0; }
发现电脑几秒钟就给出了答案,我不禁沾沾自喜,刚买的电脑就是刚买的电脑,就是好,仔细一瞧,发现什么也没有输出。

再次看题,如果直接这么算,势必会超出long long的范围,难道还要用高精度 ,不行题目就只是求后四位,所以不妨换一个思路,直接%10000
不就好了,于是有了2.0版本
#include<iostream> using namespace std; long long dg(int y) { if(y<=3) return
1; else return dg(y-1)%10000+dg(y-2)%10000+dg(y-3)%10000; } int main() { int
n=20190324; cout<<dg(n); return 0; }
发现还是不行,因为递归的效率太低了,好吧,没有办法,怎么能放弃呢。听说循环效率更高,来吧,上代码
#include<iostream> using namespace std; int a[20190330]; int main() { long
long n=20190324; a[1]=a[2]=a[3]=1; for(int i=4;i<=n;i++) {
a[i]=(a[i-1]+a[i-2]+a[i-3])%10000; } cout<<a[n]; return 0; }
好了,直接AC通过。明天见!

技术
©2019-2020 Toolsou All rights reserved,
程序员的520,送给女友的几行漂亮的代码(python版)基于stm32控制四轮小车电机驱动(一)linux查看磁盘空间命令实验四 自动化测试工具-软件测试axios拦截器封装与使用C语言——qsort函数opencv-python傅里叶变换以及逆变换在算法研究过程中如何进行算法创新nc的安装和简单操作C语言做一个简易的登陆验证(功能)界面