Salve, volevo chiedere se qualcuno è in grado di capire quale sia l’errore che fa sbagliare qualche testcase, io ho cercato il problema per 3 ore senza successo, non è un problema di velocità.
Grazie in anticipo.
#include <iostream>
#include <vector>
using namespace std;
struct s_number
{
int base;
char k=0;
};
typedef struct s_number number;
int digitsum(int x);
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int i, min, max, delta, MIN_N, a;
cin>>min>>max;
if(min>100)
MIN_N=min-100;
else
MIN_N=0;
delta=max-MIN_N;
vector<number> x(delta+1);
for(i=MIN_N;i<=max;i++){
a=digitsum(i);
if(a>=min && a<=max){
x[a-MIN_N].base=i;
x[a-MIN_N].k++;
}
}
for(i=min-MIN_N;i<=delta;i++){
if(x[i].k==0)
cout<<"IMPOSSIBLE"<<"\n";
else if(x[i].k==1)
cout<<x[i].base<<"\n";
else
cout<<"AMBIGUOUS"<<"\n";
}
return 0;
}
int digitsum(int x)
{
if(x<10)
return x;
int c, y;
c=0;
y=x;
while(y>9){
c+=y%10;
y/=10;
}
return x+digitsum(c+y);
}