- int chiffre(int nb,int pos)
- {
- for(int i=1;i<pos;++i)nb/=10;//on coupe ce qui suit
- return nb%10;//on ne prend pas ce qu'in y a avant
- }
- int lennb(int nb)
- {
- int i=1;
- while(nb/=10)++i;
- return i;
- }
- int sqr(int a)
- {
- int len=lennb(a)+2;
- int two;
- int nbmoins;
- int imp=1;
- int res=0;
- if(len%2==1)
- {
- --len;
- two=chiffre(a,len-1);
- }else{
- len-=2;
- two=chiffre(a,len)*10+chiffre(a,len-1);
- }
- do{
- nbmoins=0;
- while(imp<=two)
- {
- ++nbmoins;
- two-=imp;
- imp+=2;
- }
- imp=(imp-1)*10+1;
- res=res*10+nbmoins;
- if(len)
- {
- len-=2;
- two=two*100+chiffre(a,len)*10+chiffre(a,len-1);
- }
- }while(len);
- return res;
- }
int chiffre(int nb,int pos)
{
for(int i=1;i<pos;++i)nb/=10;//on coupe ce qui suit
return nb%10;//on ne prend pas ce qu'in y a avant
}
int lennb(int nb)
{
int i=1;
while(nb/=10)++i;
return i;
}
int sqr(int a)
{
int len=lennb(a)+2;
int two;
int nbmoins;
int imp=1;
int res=0;
if(len%2==1)
{
--len;
two=chiffre(a,len-1);
}else{
len-=2;
two=chiffre(a,len)*10+chiffre(a,len-1);
}
do{
nbmoins=0;
while(imp<=two)
{
++nbmoins;
two-=imp;
imp+=2;
}
imp=(imp-1)*10+1;
res=res*10+nbmoins;
if(len)
{
len-=2;
two=two*100+chiffre(a,len)*10+chiffre(a,len-1);
}
}while(len);
return res;
}