WA声一片
查看原帖
WA声一片
317400
Foggy_night楼主2023/11/24 23:19
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int step = 0;
int num[205], numb[205];
int ans[205];
int n, cnt = 0;
char ch[105];
void reversal_(){
	for(int i = 1; i <= cnt; i++)
		numb[cnt-i+1] = num[i];
/*	printf("reversal段\n");
	for(int i = 1; i <= cnt; i++)
		printf("%d", numb[i]);
	printf("\n");*/
	
	return;
}
bool judge(){
	int l = 1, r = cnt;
	while(l <= r){
		if(ans[l] != ans[r])
			return false;
		l++, r--;
	}
	return true;
}
void add(){
/*	printf("刚开始add\nnum:");
	for(int i = 1; i <= cnt; i++)
		printf("%d", num[i]);
	printf("\nnumb:");
	for(int i = 1; i <= cnt; i++)
		printf("%d", numb[i]);
	printf("\n");*/
	for(int i = 1; i <= cnt; i++){
		ans[i] += num[i] + numb[i];
		if(ans[i] >= n){
			ans[i+1] += (ans[i] / n); 
			ans[i] %= n;
		}
	}
	if(ans[cnt+1] > 0)
		cnt++;
	/*printf("add段\n");
	for(int i = 1; i <= cnt; i++)
		printf("%d", ans[i]);
	printf("\n");*/
	return;
}
void init(){
	int len = strlen(ch);
	while(cnt < len)
		num[++cnt] = ch[cnt-1] - '0';
	return;
}
void change(){
	memset(numb, 0, sizeof(numb));
	for(int i = 1; i <= cnt; i++)
		num[i] = ans[i];
	memset(ans, 0, sizeof(ans));
	return ;
}
int main(){
	scanf("%d%s", &n, &ch);
	init();
	 
	/*printf("%d\n", cnt);
	for(int i = 1; i <= cnt; i++)
		printf("%d", num[i]);*/
	while(step <= 30){
		reversal_();
		add();
		if(judge()){
			printf("STEP=%d", step+1);//可能还要+1 
			return 0;
		}
		change();
		step++;
	} 
	printf("Impossible!");
	return 0;
}
2023/11/24 23:19
加载中...