m0_46384299 2020-04-11 14:59
浏览 140

蓝桥杯回文数求助,我感觉自己的没错,但是OJ判断我是错的

蓝桥杯VIP试题回文数,恳求各位大佬看看是哪里错了
输入2
10011
答案输出4但是我的输出2

/*
算法训练 回文数
思路:
    使用数组解决,定义两个数组一个是正序数组另一个是倒序数组
*/

#include <iostream>
#include <iomanip>
#include <climits>
#include <algorithm>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <math.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    int number = 0;
    int a[10010], b[10010];//两种序列的数组
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    int cnt = 0;
    if (n == 16) {
        char m[10];
        cin >> m;
        int count = 0;
        for (int i = 0; i < 10; i++) {
            if (m[i] == '\0')
                break;
            count++;
        }
        for (int i = count - 1, j = 0; i >= 0; i--, j++) {
            if (m[i] >= '0' && m[i] <= '9') {
                number += (m[i] - '0') * pow(n, j);
            }
            else {
                number += (m[i] - 'A' + 10) * pow(n, j);
            }
        }
    }
    else {
        int m;
        cin >> m;
        for (int i = 0; m > 0; i++) {
            int temp = m % 10;
            number += temp * pow(n, i);
            m /= 10;
        }
    }
    for (int i = 0; number > 0; i++) {
        b[i] = number % 10;
        cnt++;
        number /= 10;
    }
    for (int k = 1; k <= 30; k++) {
        for (int i = 0; i < cnt; i++)
            a[i] = b[i];
        reverse(a, a + cnt);
        /*while (a[0] == 0) {
            for (int i = 0; i < cnt; i++)
                a[i] = a[i + 1];
        }*/
        int temp = 0;
        for (int i = 0; i < cnt; i++) {
            b[i] += a[i];
            if (b[i] >= 10) {
                if (i == cnt - 1)
                    temp = 1;
                b[i] = b[i] % 10;//取余数当做这个位置的数字
                b[i + 1]++;//后面一个数字加1然后下一次直接运算
            }
        }
        if (temp == 1)
            cnt++;
        for (int i = 0; i < cnt / 2; i++) {
            if (b[i] != b[cnt - i - 1])
                break;
            if (i == cnt / 2 - 1) {
                cout << "STEP=" << k << endl;
                return 0;
            }
        }

    }
    cout << "Impossible!";
    return 0;

}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
    • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
    • ¥15 onvif+openssl,vs2022编译openssl64
    • ¥15 iOS 自定义输入法-第三方输入法
    • ¥15 很想要一个很好的答案或提示
    • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
    • ¥15 怀疑手机被监控,请问怎么解决和防止
    • ¥15 Qt下使用tcp获取数据的详细操作
    • ¥15 idea右下角设置编码是灰色的
    • ¥15 全志H618ROM新增分区