a53

MPalind

a53
Dec 27th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include <fstream>
  2. #include <cstring>
  3. #define MOD 666013
  4. using namespace std;
  5. ifstream fin("mpalind.in");
  6. ofstream fout("mpalind.out");
  7. int A[1010][1010],n,m;
  8. char s[1010];
  9. bool P[1010][1010];
  10.  
  11. bool palindrom(int x,int y)
  12. {
  13. int i,mij=(x+y)/2;
  14. for(i=x;i<=mij;++i)
  15. if(s[i]!=s[y-i+x])
  16. return 0;
  17. return 1;
  18. }
  19.  
  20. int main()
  21. {
  22. int i,j,k,p;
  23. fin.getline(s,1008);
  24. n=strlen(s);
  25. for(i=0;i<n;++i)
  26. for(j=i;j<n;++j)
  27. P[i][j]=palindrom(i,j);
  28. for(i=0;i<n;++i)
  29. A[i][i]=1;
  30. for(k=2;k<=n;++k)
  31. for(i=0;i<=n-k;++i)
  32. {
  33. j=i+k-1;
  34. A[i][j]+=P[i][j];
  35. for(p=i;p<j;++p)
  36. if(P[i][p])
  37. A[i][j]=(A[i][j]%MOD+A[p+1][j]%MOD)%MOD;
  38. }
  39. fin>>m;
  40. for(i=1;i<=m;++i)
  41. {
  42. fin>>j>>k;
  43. fout<<A[j-1][k-1]<<'\n';
  44. }
  45. fout.close();
  46. return 0;
  47. }
Add Comment
Please, Sign In to add comment