Submission #1008171

#TimeUsernameProblemLanguageResultExecution timeMemory
1008171ezzzayPalindrome-Free Numbers (BOI13_numbers)C++14
87.50 / 100
824 ms428 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ss second #define pb push_back int find(int n){ if(n<=0)return n; string s= to_string(n); int N=s.size(); int dp[20][10][10][2]; for(int i=0;i<20;i++){ for(int j=0;j<10;j++){ for(int p=0;p<10;p++){ for(int z=0;z<2;z++)dp[i][j][p][z]=0; } } } for(int i=1;i<10;i++){ for(int j=0;j<10;j++){ if(i>s[0]-'0')break; if(i==j)continue; if(i==s[0]-'0' and j==s[1]-'0'){ dp[1][i][j][1]+=1; break; } dp[1][i][j][0]++; } } for(int i=2;i<N;i++){ for(int j=0;j<10;j++){ for(int p=0;p<10;p++){ for(int k=0;k<10;k++){ for(int z=0;z<2;z++){ if(z==1 and k> s[i]-'0')continue; if(k!=p and j!=k)dp[i][p][k][z and (s[i]-'0'==k)]+=dp[i-1][j][p][z]; } } } } } int ans=0; for(int i=0;i<10;i++){ for(int j=0;j<10;j++){ for(int z=0;z<2;z++){ ans+=dp[N-1][i][j][z]; } } } return ans; } int fun(int n){ int k=0; int g= to_string(n).size(); while(n>0){ k+=find(n); //cout<<n<<" "<<endl; g--; n=0; for(int i=0;i<g;i++){ n*=10; n+=9; } } return k; } bool check(string s){ for(int i=0;i<s.size()-1;i++){ if(s[i]==s[i+1]){ return 0; } } for(int i=0;i<s.size()-2;i++){ if(s[i]==s[i+2]){ return 0; } } return 1; } void sbtsk(int a, int b){ int t=0; for(int i=a;i<=b;i++){ if(check(to_string(i))){ t++; } } cout<<t; } signed main(){ int a,b; cin>>a>>b; if(b-a<=5e7){ sbtsk(a,b); return 0; } cout<<fun(b)-fun(a-1); }

Compilation message (stderr)

numbers.cpp: In function 'bool check(std::string)':
numbers.cpp:72:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |     for(int i=0;i<s.size()-1;i++){
      |                 ~^~~~~~~~~~~
numbers.cpp:77:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |     for(int i=0;i<s.size()-2;i++){
      |                 ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...