P1015HELP
查看原帖
P1015HELP
338370
Merron楼主2020/7/16 12:03

RT

为什么只有 50 分?自己没检查出错因。

求大佬指点!

#include <iostream>
#include <string>
using namespace std ;
void add (int a[], int b[]) ;
void turn (int a[]) ;
void insert () ;
bool check (int a[]) ;

int n, q[1000050], nq[1000050], l, ans ;
string str ;

int main ()
{
    cin >> n >> str ;
    insert () ;
    l = str.size () ;
    while (! check (q))
    {
        turn (q) ;
        add (q, nq) ;
        ans ++ ;
        if (ans > 30)
        {
            break ;
        }
    }
    if (ans > 30)
    {
        cout << "Impossible!" ;
    }
    else
    {
        cout << "STEP=" << ans ;
    }
    return 0 ;
}

void add (int a[], int b[])
{
    for (int i = 1 ;i <= l ;i ++)
    {
        a[i] += b[i] ;
        a[i + 1] += a[i] / n ;
        a[i] %= n ;
    }
    if (a[l + 1] > 0)
    {
        l ++ ;
    }
}

void turn (int a[])
{
    int j = 0 ;
    for (int i = l ; i >= 1 ;i --)
    {
        nq [j ++] = a[i] ;
    }
}

bool check (int a[])
{
    int l2 = l ;
    int i = 1 ;
    int j = l ;

    while (l2 --)
    {
        if (l2 < l / 2)
        {
            break ;
        }
        if (a[i] != a[j])
        {
            return 0 ;
        }
        i ++ ;
        j -- ;
    }
    return 1 ;
}

void insert ()
{
    int j = 0 ;
    for (int i = str.size () - 1 ; i >= 0 ;i --)
    {
        if (str[i] >= '0' && str[i] <= '9')
        {
            q[j ++] = str[i] - '0' ;
        }
        else
        {
            q[j ++] = str[i] - 'A' + 10 ;
        }
    }
}
2020/7/16 12:03
加载中...