余数的加法定理(关于fn的计算)

余数的加法定理(关于fn的计算)

理解

刚开始写的时候,我真的是看不懂题目的,然后后面看了一个下午,还去百度,还是看的不是很懂。。。
那时候的我怀疑人生,我是不是智商有问题?后面问了大家,发现很多人都读不懂
我知道了,是大家的阅读理解都不行。。。
后面学长说了,有点懵懵懂懂的,再看了同学发的例题讲解,懂了那么一丢丢叭。。。
题目:求公式fn=fn-1+fn-2;f1=1;f2=1;
要求:输入一个数n,求fn公式对10007的余数

思路与解题方式

刚理解之后,我就想到了大一上海英老师教过的替换(应该是这么叫的吧,具体叫什么记不清了)
大致就是

temp=a;
a=b;
b=temp;

相当于把两个杯子里面的水相互交换,但不能中和
因为题目说是一个整数也没说什么类型的整数,我就全部用了int型
所以就有了以下代码
#include<iostream>
using namespace std;
void main()
{
    int n;
    int f1=1;
    int f2=1;
    int i;
    int fn=1;
    cin>>n;
    if(n>1&&n<1000000)
  {
    for(i=2; i<n; i++)
    {
        fn=(f1+f2)%10007;
        f1=f2%10007;
        f2=fn%10007;
    }
  }
    else
  {
    return ;
  }
    cout<<fn;
    return ;
}

这里还用到了一个数学知识:余数加法定理(a与b的和对c的余数等于a、b分别对c的余数之和,即(a+b)%c=(a%c+b%c)%c)

余数的加法定理(关于fn的计算)

上一篇:微信小程序开发环境安装以及相关设置配置


下一篇:First One HDU - 5358