求调
查看原帖
求调
358283
Crab_time楼主2021/7/29 19:25
#include<iostream>
#include<stdio.h>
using namespace std;

int f[25],n,x,a,b,m,sum,f_up[25],f_down[25],f_cup[25];
//5 x 5+x 10+x 15+2x 35+3x
//1    2    3    4    5     6     7
//a+0x 0a+x a+x  a+2x 2a+3x 3a+5x 5a+8x
//0    0a+x 0a+x a+x  a+2x  2a+3x 3a+5x
//a+0x 0    a+0x 0a+x a+x   a+2x  2a+3x
//m = (a+fib(n-1-4)*a+fib(n-1-3)*x)*(n-1)/2=>m=(a+(fib(n-5)*a+fib(n-4)*x))*(n-1)/2=>2m/(n-1) = (a+(fib(n-5)*a+fib(n-4)*x))=> (2m/(n-1) -(fib(n-5)+1) * a)/fib(n-4) = x
// long long fib(long long a)//斐波那契递归函数
// {
//     if (a == 1 || a == 2)
//     {
//         return 1;
//     }
//     else
//     {
//         return fib(a - 1) + fib(a - 2);
//     }
// }

// void up(int a,int n,int m)
// {
//     int b = 
// }

int main()
{
    //freopen("P1011.in","r",stdin);
    //freopen("P1011.ans","w",stdout);
    cin >> a >> n >> m >> x;
    //b = ((2 * m)/(n-1) - (fib(n-5)+1)*a)/fib(n-4);
    f_cup[n-1] = -m;f_up[n-1] = 0;f_down[n-1] = m;f_down[0] = 0;f_up[0] = a;f_cup[0] = a; 
    for(int i = 1;i<=1000;i++)
    {
        sum = 0;
        f_up[1] = i;f_down[1] = i;f_cup[1] = f_up[1]-f_down[1];
        for(int j = 2;j<n-1;j++)
        {
            f_up[j] = f_up[j-1] + f_up[j-2];
            f_down[j] = f_up[j-1];
            f_cup[j] = f_up[j] - f_down[j];
        }
        for(int j = 0;j<n-1;j++)
        {
            sum+=f_cup[j];
        }
        if(m == sum)
        {
            //cout << i << endl;
            break;
        }
    }
    // for(int i = 0;i<n;i++)
    // {
    //     cout << f_up[i] << " " << f_down[i] << " " << f_cup[i] << endl;
    // }
    for(int i = 0;i<x;i++)
    {
        // cout << f_cup[i] << endl;
        b += f_cup[i];
    }
    cout << b;
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

求调谢谢

2021/7/29 19:25
加载中...