zoukankan      html  css  js  c++  java
  • zoj3702 Gibonacci number ——找规律

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3702

    题目大意:

      给一个数列,第一项是1,给第 i 项,这个数列满足斐波那契数列的那种性质。问是不是存在,如果存在输出第 j 项,否则输出 -1 

    题目思路:

      找规律,这个数列每一项和原来的斐波那契数列的差值是原来的斐波那契数列的倍数。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 using namespace std;
     5 #define LL long long int
     6 LL f[30], g[30];
     7 
     8 int main(void){
     9     int i , j , k;
    10     f[0] = f[1] = 1;
    11     for (i = 2; i < 23; ++i) {
    12         f[i] = f[i-2] + f[i-1];
    13     }
    14     LL I, J, GI;
    15     int t;
    16     scanf("%d", &t);
    17     while (t--) {
    18         cin >> I >> GI >> J;
    19         LL d = GI - f[I];
    20         if (d < 0 || d % f[I-1] != 0) {
    21         printf("-1\n"); continue;
    22         }
    23         d = d / f[I-1];
    24         cout << f[J-1] * d + f[J] << endl;
    25     }
    26     return 0;
    27 }

      虽然以前做过这道题,但是忘了什么规律了,想很久……

  • 相关阅读:
    MySQL数据库基础
    Django框架
    Python基础
    C#
    小功能
    数据结构与算法
    C语言
    Robot Framework高级
    Robot Framework初级
    C++基础
  • 原文地址:https://www.cnblogs.com/liuxueyang/p/3066004.html
Copyright © 2011-2022 走看看