Crittografia LWF

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];
		}
	}
}

Ciao,
Il tuo programma dà come risultato per 2, 01; per 3, 001.
Prova a vedere cos’è sbagliato

Metti magari il codice con ``` all’inizio e alla fine, così non perdi le indentazioni e le librerie

non ho capito la parte delle “”

Servono per postare il codice in modo elegante.

#include <bits/stdc++.h>

using namespace std;

int main(){
   return 0;
}

devi aprire e chiudere il blocco di codice con ```

scusami ma non riesco a capire cosa cambia

Che quando posti una porzione di codice e le usi è molto più leggibile rispetto a non usarle. Puoi modificare il tuo vecchio messaggio per accorgertene.

1 Mi Piace