标签:学习 记录 int 蓝桥 枚举 Fn 格式 余数 输入
蓝桥杯学习记录6
一:测试练习
问题描述
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
输入格式
输入包含一个整数n。
输出格式
输出一行,包含一个整数,表示Fn除以10007的余数。
解题思路:
该题的思路很简单,就是运用一个循环即可,但是在第一次提交时出现了运行时间过长,之后在修改时了解题意,目的是为了求余数,并不是求F(n),所以没有必要先求出F(n),直接求余放入到循环计算中即可,这样可以减少运算的时间
具体代码:
#include<iostream>
using namespace std;
long t[1000000];
int main()
{
int n;
int a;
cin>>n;
t[1]=t[2]=1;
if(n>2){
for(a=3;a<=n;a++){
t[a]=(t[a-1]+t[a-2])%10007;//直接计算
}
}
cout<<t[n];
return 0;
}
二:视频练习:
视频名称及链接
https://www.bilibili.com/video/BV1jE411g76D?p=7
枚举算法视频讲解
学习总结:
枚举是根据提出的问题,一一列举该问题的所有的可能的解,并逐一列出来的过程中,检验每个个可能解是否是问题的真正的解,枚举法一般比较直观,容易理解。
枚举法的机构就是:枚举范围循环+条件判断语句。
对应练习:
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
#include<iostream>
using namespace std;
int main(){
int n;
1<=n<=54;
cin>>n;
int a;
int b;
int i,j,k;
for(i=1;i<=9;i++){
for(j=0;j<=9;j++){
for(k=0;k<=9;k++){
a=i+j+k+j+i;
if(a==n){
cout<<i<<j<<k<<j<<i<<endl;
}
}
}
}
for(i=1;i<=9;i++){
for(j=0;j<=9;j++){
for(k=0;k<=9;k++){
b=i+j+k+k+j+i;
if(b==n){
cout<<i<<j<<k<<k<<j<<i<<endl;
}
}
}
}
return 0;
}
标签:学习,记录,int,蓝桥,枚举,Fn,格式,余数,输入 来源: https://blog.csdn.net/forgethh/article/details/114168814
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。