Cod sursa(job #2939496)

Utilizator albertaizicAizic Albert albertaizic Data 13 noiembrie 2022 19:15:37
Problema Ubuntzei Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <stdio.h>
using namespace std;
char x[102],di[102];
int nr;
void readx(){
  char ch;
  int i=0,aux;
  ch=fgetc(stdin);
  while(ch!='\n'){
    x[i]=ch-'0';
    ch=fgetc(stdin);
    i++;
  }
  nr=i;
  i=0;
  while(i<nr/2){
    aux=x[i];
    x[i]=x[nr-i-1];
    x[nr-i-1]=aux;
    i++;
  }
}
bool compx(int b,int cif){
  if(nr>cif)
    return 0;
  if(nr<cif)
    return 1;
  int a=0,i=nr-1;
  while(i>=0){
    a=a*10+x[i];
    i--;
  }
  if(a>b)
    return 0;
  return 1;
}
bool compxb(int b,int cif){
  if(nr>=2)
    return 0;
  int a=0,i=nr-1;
  while(i>=0){
    a=a*10+x[i];
    i--;
  }
  if(a>1)
    return 0;
  return 1;
}
void imp(int b,int cif){
  int i,r,a=0,nrs;
  i=1;
  while(i<=cif){
    a=a*10+x[nr-i];
    i++;
  }
  i=nr-i;
  nrs=0;
  while(i>=0){
    r=a%b;
    di[nrs]=a/b;
    a=r*10+x[i];
    nrs++;
    i--;
  }
  di[nrs]=a/b;
  i=0;
  nr=nrs+1;
  while(nrs>=0){
    x[i]=di[nrs];
    di[nrs]=0;
    i++;
    nrs--;
  }
  while(x[nr-1]==0)
    nr--;
}
int main(){
  int y=0,b,p,cif;
  readx();
  scanf("%d",&b);
  p=10;
  cif=1;
  while(b>=p){
    p*=10;
    cif++;
  }
  if(compx(b,cif)==1){
    printf("0");
  }else{
    while(compxb(b,cif)==0){
      imp(b,cif);
      y++;
    }
    printf("%d",y);
  }
  return 0;
}