1 条题解

  • 0
    @ 2023-4-23 13:44:36
    #include<bits/stdc++.h>
    using namespace std;
    int len;
    char a[110],b[110];
    int n;
    int check(){
    	for(int i=0 ; i<len ; i++) if(a[i] != a[len-i-1]) return 0;
    	return 1;
    }
    void add(){
    	for(int i=0 ; i<len ; i++) b[len-i-1] = a[i];
    	len += 2;
    	for(int i=0 ; i<len ; i++){
    		a[i] += b[i];
    		if(a[i] >= n){
    			a[i+1]++;
    			a[i]-=n;
    		}
    	}
    	while(!a[len-1]) len--;
    }
    int main(){
    	scanf("%d",&n); 
    	int step = 0;
    	cin >> a;
    	len = strlen(a);
    	for(int i=0 ; i<len ; i++){
    		if(a[i] >= '0' && a[i] <= '9') a[i] -= '0';  //将字符转化为数字
    		else a[i] = a[i] - 'A' + 10; //16进制的情况
    	}
    	while(!check()){
    		step++;
    		if(step > 30) break;
    		add();
    	}
    	if(step <= 30) printf("STEP=%d",step);
    	else printf("Impossible!");
    	return 0;
    }
    
    • 1

    信息

    ID
    1201
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    33
    已通过
    11
    上传者