I’ve been trying to solve Alphacode, and while my solution works for all the provided sample cases, as well as edge cases such as 1020 and 110, it fails for larger test cases:
Input:
25114
1111111111
3333333333
181292321118743131219236834956616923925
61247812412412123124579127212412435689
1798235697156912783569836129273561725378612378635613059612634513257896128935618263
0
Output:
6
89
1
1920
19440
4608
Here is my code:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
while (true) {
string code;
cin >> code;
if (code.at(0)-48 == 0) break;
long long solve[code.length()];
solve[0] = 1;
for (int i = 1; i < code.length(); i++) {
if (code.at(i)-48 == 0) {
if (i == 1) {
solve[i] = 1;
} else {
solve[i] = solve[i-2];
}
} else if (code.at(i-1)-48 <= 2 && code.at(i-1)-48 > 0 && code.at(i)-48 <= 6) {
if (i == 1) {
solve[i] = 2;
} else {
solve[i] = solve[i-1] + solve[i-2];
}
} else {
solve[i] = solve[i-1];
}
}
cout << solve[code.length()-1] << endl;
}
}
Thank you!