Questa soluzione mi da 30/100 é non capisco quali siano i casi sbagliati mi potreste aiutare.
Il 30 è dato dal fatto che N è massimo 1000000 è il numero di fibonacci più grande di quest’ultimo è il 31esimo numero.
Grazie in anticipo
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream in("input.txt");
ofstream out("output.txt");
long long int N;
in >> N;
long long int fib[30];
fib[0]=1;
fib[1]=1;
for(long long int i=2;i<30;i++){
fib[i]=fib[i-1]+fib[i-2];
}
bool B=true;
long long int I=0;
long long int ris[30];
for(long long int i=29;i>0;i--){
if(N-fib[i]>=0 && i!=1){
N=N-fib[i];
ris[i]=1;
}
else{
ris[i]=0;
}
if(B==true && N==0){
I=i;
B=false;
}
}
bool A=true;
bool r[30] = {true};
for(long long int i=29;i>0 && A==true;i--){
if(ris[i]==0){
r[i]=true;
}
else{
A=false;
}
}
if(I<1){
out << 1;
}
for(long long int i=0;i<30;i++){
if(r[i]==false){
out << ris[i];
}
}
}