Untitled

 avatar
unknown
plain_text
5 months ago
1.4 kB
1
Indexable
//13690 - Bad Fibonacci's soup
#include <stdio.h>
#include <stdlib.h>
int f(int, int, int, int, int);
int g(int, int, int, int, int);
int ansf[105], ansg[105];
int main(void)
{
    int a, b, c, d, n;

    for(int i = 0;i<105;i++)
    {
        ansf[i] = -500;
        ansg[i] = -500;
    }

    scanf("%d %d %d %d %d", &a, &b, &c, &d, &n);

    printf("%d %d\n", f(a, b, c, d, n), g(a, b, c, d, n));
    
    return 0;
}

int f(int a, int b, int c, int d, int n)
{
    if(n == 0){
        ansf[0] = a;
        return a;//直接return 就可以了
    }

    if(n == 1){
        ansf[1] = b;
        return b;//直接return 就可以了
    }

    if(ansf[n] != -500)
        return ansf[n];

    if(n%3 == 0)
        ansf[n] = f(a, b, c, d, n-1) + g(a, b, c, d, f(a, b, c, d, n/3)%n);

    else
        ansf[n] = f(a, b, c, d, n-1) + g(a, b, c, d, n-2);
    
    return ansf[n];

}
int g(int a, int b, int c, int d, int n)
{
    if(n == 0){
        ansg[0] = c;
        return c;//直接return 就可以了
    }

    if(n == 1){
        ansg[1] = d;
        return d;//直接return 就可以了
    }

    if(ansg[n] != -500)
        return ansg[n];


    if(n%5 == 0)
        ansg[n] = g(a, b, c, d, n-1) + f(a, b, c, d, g(a, b, c, d, n/5)%n);
    

    else
        ansg[n] = g(a, b, c, d, n-1) + f(a, b, c, d, n-2);



    return ansg[n];
}


Editor is loading...
Leave a Comment