存数时比如87只能先存78到数组a,再通过函数把87存到数组b,两组数相加时也先得出78+87=671,通过函数再得176。第一次没想出来,看了题解才发现只能这么存。
#include <stdio.h>
#include <stdlib.h>
int a[100]={0},b[100]={0},n,m,d;
int cunshu()
{
int i;
for(i=0;m>0;i++)
{
a[i]=m%10;
m=m/10;
}
return i;
}
int fan()
{
int i;
for(i=0;i<d;i++)
b[i]=a[d-1-i];
return 0;
}
int panduan()
{
int i;
for(i=0;i<d;i++)
{
if(a[i]!=a[d-1-i])
return 0;
}
return 1;
}
int xiangjia()
{
int i,sum=0;
for(i=0;i<=d;i++)
{
sum=a[i]+b[i]+sum;
a[i]=sum%n;
sum=sum/n;
}
if(a[d]==0) return d;
if(a[d]!=0) return d+1;
}
int main()
{
int p=0;
scanf("%d %d",&n,&m);
d=cunshu();
fan();
while(panduan()==0)
{
d=xiangjia();
fan();
p++;
if(p>30)
{
printf("Impossible\n");
break;
}
}
if(p<=30)
printf("STEP=%d\n",p);
return 0;
}