Untitled
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