Dev上测试可以但这里不行
查看原帖
Dev上测试可以但这里不行
811155
cyping楼主2023/1/30 18:01

如题,下了一组数据后在Devcpp上验证了一下是可以的

#include<stdio.h>
int isreverse(int *a,int l)
{
	for(int i=0,j=l-1;i<j;i++,j--) if(a[i]!=a[j]) return 0;
    return 1;
}

int main(void)
{
	char ch;
	int m[100],len=0,rev[100],step,add[100]={0},i,n;
	scanf("%d",&n);
	getchar();
	for(ch=getchar();ch!=EOF&&ch!='\n';){  //扫描m 
		m[len]=ch-'0';
		len++; 
		ch=getchar();
	}
	for(step=0;!isreverse(m,len);step++){
		for(i=1;i<=len;i++){  
		   rev[i-1]=m[len-i];
	    }
		for(i=0;i<len;i++){
		   add[i+1]=(add[i]+m[i]+rev[i])/n;
	       add[i]=(add[i]+m[i]+rev[i])%n;
        }
        if(add[i])len++;
        for(i=0;i<len;i++){
        	m[i]=add[i];
        	add[i]=0;
		}
        if(step>30)break;
	}
	if(step<=30) printf("STEP=%d",step);
	else printf("Impossible!");
}
2023/1/30 18:01
加载中...