最近遇到一个斐波拉契数列的题(没错又是取模),并且是项的值取模得到的值作为结果,把自己难到了,于是又去找学长了。。。。。。。。

总结:

任何小的数除以一个大的数,余数是自己,比如5%6=5,1%10=1……

任意两个数的和取模得到的数等于它们各自的模(取向同的数的模)的和再取模(避免大于10)

放上学长的图:
图片

原题:

原题

代码如下:

int main()
{
  int *sum = (int*)malloc(33000000 * sizeof(int));   //开辟内存用来存储数据
  int T, M;
  sum[0] = sum[1] = 1;
  scanf("%d %d", &T, &M);
  for (int i = 2; i < 33000000; ++i)
  {
    sum[i] = (sum[i - 1] % M + sum[i - 2] % M) % M;  //模运算
  }

  int temp;
  for (int i = 0; i < T-1; ++i)
  {
    scanf("%d", &temp);
    printf("%d\n", sum[temp - 1]);
  }
  scanf("%d", &temp);
  printf("%d", sum[temp - 1]);
  free(p);

  system("pause");

  return 0;
}


Last modification:February 26, 2019
If you think my article is useful to you, please feel free to appreciate