Advertisement
a_pramanik

PAlindromic numbers LOJ 1205

Apr 2nd, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. ///:-)
  2. #include <bits/stdc++.h>
  3. #define pb push_back
  4. #define ll long long int
  5. #define inf 2000000000
  6. #define infLL 9000000000000000000
  7. #define infULL 18446744073709551615
  8. #define Aktaruzzaman using
  9. #define pi (2.0*acos(0.0))
  10. #define Pramanik namespace std;
  11. #define vsort(v)   sort(v.begin(),v.end())
  12. #define ull unsigned long long int
  13. #define mem(a, b) memset(a, b, sizeof a)
  14. #define cf 100009
  15. #define MOD 1000000007
  16. #define pii pair<int, int>
  17.  
  18. //int dx[]={0,1,0,-1};
  19. //int dy[]={1,0,-1,0};
  20. //int dx[]={1,1,0,-1,-1,-1,0,1};
  21. //int dy[]={0,1,1,1,0,-1,-1,-1};
  22.  
  23. template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
  24. template< class T > inline T lcm(T a,T b) {a=abs(a);b=abs(b); return (a/gcd(a,b))*b;}
  25. template <class T> inline T is_prime(T a){if(a<2|a==4)return false;if(a==2||a==3||a==5)return true; T g=(T)sqrt(a)+1; for(T i=2; i<=g; i++){if(a%i==0)return false;}return false;}
  26. template <class T> inline T bigmod(T n,T p,T m){if(p==0)return 1; if(p%2)return ((n%m)*bigmod(n,p-1,m))%m; else {T c=bigmod(n,p/2,m);return ((c%m)*(c%m))%m;}}
  27.  
  28. Aktaruzzaman Pramanik
  29.  
  30. ll vis[19][19][2];
  31. ll temp[20], num[20];
  32.  
  33. ll dp(ll st, ll cur, bool state, bool flg)
  34. {
  35.     if(cur<0)return state;
  36.     if(flg==0&&vis[st][cur][state]!=-1)return vis[st][cur][state];
  37.  
  38.     ll hi;
  39.  
  40.     if(flg==1)hi=num[cur];
  41.     else hi = 9;
  42.  
  43.     ll xx = 0;
  44.     for(ll i=0; i<=hi; i++){
  45.         temp[cur]=i;
  46.         if(st==cur && i==0) xx+=dp(st-1, cur-1, state, flg&& i==hi);
  47.         else if(state && cur<(st+1)/2) xx+=dp(st, cur-1, temp[st-cur]==i, flg&& i==hi);
  48.         else xx+=dp(st, cur-1, state, flg && i==hi);
  49.     }
  50.  
  51.     if(flg==0)vis[st][cur][state]=xx;
  52.     return xx;
  53. }
  54.  
  55. ll makeAndGo(ll x)
  56. {
  57.     ll len=0;
  58.  
  59.     while(x){
  60.         num[len++]=x%10;
  61.         x/=10;
  62.     }
  63. //    cout<<"num >> ";
  64. //    for(int i=0; i<len; i++)cout<<num[i];
  65. //    cout<<endl;
  66.     num[len]=0;
  67.     return dp(len-1, len-1, 1, 1);
  68.  
  69. }
  70.  
  71. int main()
  72.  
  73. {
  74.     ios_base:: sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
  75.     ll t, i, j, k, x, y, l, r;
  76.  
  77.     cin>>t;
  78.     int cc=0;
  79.     while(t--){
  80.         cin>>l>>r;
  81.         if(l>r)swap(l, r);
  82.         mem(vis, -1);
  83.         x = makeAndGo(l-1);
  84.         y = makeAndGo(r);
  85.         cout<<"Case "<<++cc<<": ";
  86.         cout<<y-x<<endl;
  87.     }
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement