1 / 4
Aug 2019

https://www.spoj.com/problems/PALIN/7

Cześć, dopiero zaczynam przygodę z spoj’em, i nie wiem w czym leży problem. Poniższy kod, mimo że sprawdzany na wiele różnych sposobów wywala compilation error. Jakaś podpowiedź co robię źle?
https://ideone.com/9PrqQc3 - tutaj jest sucess…

#include<iostream>
#include<string>
#include<sstream>
#include<math.h>
using namespace std;
bool palindrom (string n)
{
long b;
b = n.length();

for (long i=0; i<b/2+1; i++)
{
    if (n[i]==n[b-1-i])
    {
        if (i==b-1-i)
        {
            return true;
        }
    }
    else return false;
}
}

int main()
{
long n;
cin >> n;
long test;
for (long i=0; i<n; i++)
{
    cin >> test;
    if (test<10000000)
    {
        for (long j=1; ;j++)
        {
        long kolejna = test + j;
        ostringstream ss;
        ss << kolejna;
        string str = ss.str();
        if (palindrom(str)==1)
            {
            cout << kolejna;
            break;
            }
        }
    }
}
}
  • created

    Aug '19
  • last reply

    Aug '19
  • 3

    replies

  • 647

    views

  • 2

    users

  • 2

    links

link dodany na początku posta. Ogólnie mam taki problem, że gdzie nie próbuje zagnieździć pętli z warunkiem z zadania (for a given positive integer K of not more than 1 000 000 digits), to nawet jak test = 2 000 000 to i tak kod się dalej wykonuje i podaje 2 000 002…

Podana liczba może mieć milion cyfr, więc próba zapisu jej w zmiennej long jest bez sensu. Spróbuj zastanowić się jak otrzymać następny palindrom bez wielokrotnego sprawdzania kolejnych liczb. Mała podpowiedź:

74381234 -> 74388347
12378474 -> 12377321 -> 12388321
5 -> 6
1119111 -> 1120211