题解 | #[NOIP1999]回文数#

[NOIP1999]回文数

https://www.nowcoder.com/practice/a432eb24b3534c27bdd1377869886ebb

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

// Function to reverse a string
void reverse_str(char* str) {
    int n = strlen(str);
    for (int i = 0; i < n / 2; i++) {
        char temp = str[i];
        str[i] = str[n - 1 - i];
        str[n - 1 - i] = temp;
    }
}

// Function to check if a string is a palindrome
int is_palindrome(char* str) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        if (str[i] != str[len - i - 1]) {
            return 0;  // Not a palindrome
        }
    }
    return 1;  // Is a palindrome
}

// Function to add two numbers in a given base and return the result as a string
void add_reverse(char* num, int base, char* result) {
    char reversed[101];
    strcpy(reversed, num);
    reverse_str(reversed);
    
    int carry = 0;
    int n = strlen(num);
    int sum = 0;
    int i = 0;
    
    // Initialize result to zero
    memset(result, 0, 101);

    // Adding reversed numbers
    for (i = 0; i < n; i++) {
        int digit1 = (num[n - i - 1] >= 'A') ? (num[n - i - 1] - 'A' + 10) : (num[n - i - 1] - '0');
        int digit2 = (reversed[n - i - 1] >= 'A') ? (reversed[n - i - 1] - 'A' + 10) : (reversed[n - i - 1] - '0');
        sum = digit1 + digit2 + carry;
        result[i] = (sum % base < 10) ? (sum % base + '0') : (sum % base - 10 + 'A');
        carry = sum / base;
    }
    if (carry > 0) {
        result[i++] = (carry < 10) ? (carry + '0') : (carry - 10 + 'A');
    }
    result[i] = '\0';
    reverse_str(result);
}

int main() {
    int base;
    char num[101];
    
    // Read base and number
    scanf("%d", &base);
    scanf("%s", num);
    
    char result[101] = "";
    int step = 0;
    
    for (step = 0; step < 30; step++) {
        if (is_palindrome(num)) {
            printf("STEP=%d\n", step);
            return 0;
        }
        add_reverse(num, base, result);
        strcpy(num, result);
    }
    
    printf("Impossible!\n");
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务