c program for padovan string
Padovan series are positive integers obtained by the following process: The Padovan series is the sequence of integers P(n) defined by the initial values P(0) = P(1) = P(2) = 1, and the recurrence relation P(n) = P(n - 2) + P(n - 3).
Write a program to generate the Padovan series from n to m.
Constraints:
- n >=0 and m <=49.
- m >= n.
If the given inputs are invalid or out of range, then return -1
.
Example 1:
Input
from = 5
to = 10
Output:
returns {3, 4, 5, 7, 9, 12}
Explanation:
Collapse | Copy Code
P(0
) = P(1
) = P(2
) = 1
, and
the recurrence relation P(n) = P(n - 2
) + P(n - 3
).
p(5
) = p(5
-2
) + p(5
-3
)
= p(3
) + p(2
) -------- (1
)
p(3
) = p(3
-2
) + p(3
-1
)
= p(1
) + p(2
)
= 1
+ 1
= 2
Substitute in
(1
)
p(5
) = 2
+ 1
= 3
Similarly the recurrence should continue for the remaining positions.
Example 2:
Input
from = 45
to = 60
Output
Returns {-1}
CODE TO IMPLEMENT THIS:
Collapse | Copy Code
import
java.util.Scanner;
import
java.util.ArrayList;
public
class
Padovan
Series
{
public
static
void
main(String
[] arg)
{
Scanner read = new
Scanner(System.in);
System.out.println("
Enter starting no. : "
);
int
start = read.nextInt();
System.out.println("
Enter ending no. : "
);
int
end = read.nextInt();
int
[] ans = getSeries(start, end);
System.out.println("
Padovan
series : "
);
for
(int
a : ans)
System.out.print(a + "
"
);
}
public
static
int
[] getSeries(int
s, int
e)
{
ArrayList list = new
ArrayList();
int
i, j = 0
;
for
(i = s; i <= e; i++, j++)
list.add(getPadovan
(i));
int
[] ans = new
int
[j];
for
(i = 0
; i < j; i++)
ans[i] = list.get(i);
return
ans;
}
public
static
int
getPadovan
(int
p)
{
if
(p == 0
|| p == 1
|| p == 2
)
return
1
;
return
(getPadovan
(p - 2
) + getPadovan
(p - 3
));
}
}