Ho provato il codice più volte, prendendo valori in input differenti, e facendo i calcoli la sequenza di bit dovrebbe corrispondere al valore decimale dato in input.
Ma solo il primo testcase risulta corretto nel portale.
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector<int>answer;
int lwf(int n,int f1,int f2){
int ris;
if(n>f2){
ris=lwf(n,f2,f1+f2);
if(ris>f2){
answer.push_back(1);
return ris-f2;
}
else if(ris==f2){
answer.push_back(1);
return 0;
}else{
answer.push_back(0);
return ris;
}
}else if(n==f2){
answer.push_back(1);
return 0;
}else{
return n;
}
}
int main()
{
ifstream leggi("input.txt");ofstream scrivi("output.txt");
int n,ris;
leggi>>n;
ris=lwf(n,0,1);
for(int i=answer.size()-1;i>=0;i--){
scrivi<<answer.at(i)<<" ";
}
}
Non so se ci sono altri errori, ma sicuramente non dovrebbe esserci lo spazio tra i valori nell’output.
4 Mi Piace
Okay, ho fatto come suggerito, ma la situazione non è cambiata così tanto.
Adesso al posto di ottenere 10/100 ottengo 20/100.
Levando lo spazio il codice fa 100…
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector<int>answer;
int lwf(int n,int f1,int f2){
int ris;
if(n>f2){
ris=lwf(n,f2,f1+f2);
if(ris>f2){
answer.push_back(1);
return ris-f2;
}
else if(ris==f2){
answer.push_back(1);
return 0;
}else{
answer.push_back(0);
return ris;
}
}else if(n==f2){
answer.push_back(1);
return 0;
}else{
return n;
}
}
int main()
{
ifstream leggi("input.txt");ofstream scrivi("output.txt");
int n,ris;
leggi >>n;
ris=lwf(n,0,1);
for(int i=answer.size()-1;i>=0;i--){
scrivi<<answer.at(i);
}
}
1 Mi Piace
Si, grazie mille ad entrambi.
Mi ero scordato di aver apportato un’altra modifica, per cercare di risolvere l’errore, prima di togliere gli spazi che evidentemente ha contribuito nel dare un risultato errato.