Pagini recente » Cod sursa (job #1808663) | Cod sursa (job #2785342) | Cod sursa (job #1289123) | Cod sursa (job #1854451) | Cod sursa (job #1569721)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int get_number_of_palindroms_from(int x, const char *str, int l)
{
int number=1, distance=0;
bool possible_identic=true;
do
{
distance++;
if(x-distance<0)
break;
else
{
if(possible_identic)
{
if(str[x-distance]==str[x])
{
number++;
}
else
{
possible_identic=false;
}
}
}
if(x+distance==l)
{
break;
}
else
{
if(str[x+distance]!=str[x])
{
possible_identic=false;
}
if(str[x-distance]==str[x+distance])
{
number++;
}
else
break;
}
}
while(1);
return number;
}
int main()
{
fstream f, g;
char str[1000000];
int i, l, sum=0;
f.open("pscpld.in", ios::in);
g.open("pscpld.out", ios::out);
f>>str; l=strlen(str);
for(i=0; i<l; i++)
{
sum+=get_number_of_palindroms_from(i, str, l);
}
g<<sum;
return 0;
}