salve a tutti, ho un problema a fare 100 punti nel problema calcolatrice d’ epoca, molto probabilmente è causato da un’ errore del testcase 004, dato che è nella subtask 2 (n<10) e ho testato manualmente tutti e 11 i casi ed in locale la soluzione è corretta.
Ciao,
dubito che sia un problema dei testcase, ho appena rimandato la mia soluzione da 100 ottenendo nuovamente 100. Prova a postare il codice, magari c’è un errore.
#include
#include
#include<stdio.h>
#include<stdlib.h>
#include
#include
using namespace std;
fstream in, out;
int logten(int n){
int i;
float a;
a=n;
for(i=0;a>1;i++){
a=a/10;
}
return i;
}
int expten(int n){
int a,i;
a=1;
for(i=0;i<n;i++){
a=a*10;
}
return a;
}
int main(){
in.open(“input.txt”,ios::in);
out.open(“output.txt”,ios::out);
int n,i,l,d=0,j;
in>>n;
bool flag=true;
l=logten(n);
int v[l];
for(i=l-1;i>=0;i–){
v[i]=(n%expten(i+1)-n%expten(i))/expten(i);
if (v[i]==3||v[i]==4||v[i]==7){
flag=false;
}
if(v[i]==6){
v[i]=9;
}else{
if(v[i]==9){
v[i]=6;
}
}
}
j=l-1;
if(v[0]==0){
flag=false;
}
for(i=0;i<l;i++){
d=d+v[i]*expten(j);
j–;
}
if (d<n&& flag==true){
out<<d;
}
else{
out<<n;
}
in.close();
out.close();
return 0;
}
Postando il codice ti ha tagliato alcune parti, per farlo visualizzare correttamente devi mettere tre accenti gravi (```) all’inizio e alla fine del codice.
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<queue>
using namespace std;
fstream in, out;
int logten(int n){
int i;
float a;
a=n;
for(i=0;a>1;i++){
a=a/10;
}
return i;
}
int expten(int n){
int a,i;
a=1;
for(i=0;i<n;i++){
a=a*10;
}
return a;
}
int main(){
in.open("input.txt",ios::in);
out.open("output.txt",ios::out);
int n,i,l,d=0,j;
in>>n;
bool flag=true;
l=logten(n);
int v[l];
for(i=l-1;i>=0;i--){
v[i]=(n%expten(i+1)-n%expten(i))/expten(i);
if (v[i]==3||v[i]==4||v[i]==7){
flag=false;
}
if(v[i]==6){
v[i]=9;
}else{
if(v[i]==9){
v[i]=6;
}
}
}
j=l-1;
if(v[0]==0){
flag=false;
}
for(i=0;i<l;i++){
d=d+v[i]*expten(j);
j--;
}
if (d<n&& flag==true){
out<<d;
}
else{
out<<n;
}
in.close();
out.close();
return 0;
}
Prova a > 0
, dovrebbe risolvere il problema.
grazie mille non avevo notato che a era di tipo float, può darsi che il compilatore del software di testing dia un’ altro risultato, ora ho 100/100.