Submission #40809

#TimeUsernameProblemLanguageResultExecution timeMemory
40809someone_aaPalindrome-Free Numbers (BOI13_numbers)C++14
96.25 / 100
2 ms1008 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; string x; ll dp[10][10][20][2]; ll a, b; ll recursion(int first, int second, int position, bool f) { if(position >= x.length()) { return 1; } else { if(dp[first][second][position][f] == -1) { ll sum = 0; if(f) { for(int i=0;i<=9;i++) { if(i!=first && i!=second) sum += recursion(second, i, position+1, f); } } else { int temp = x[position] - '0'; for(int i=0;i<temp;i++) { if(i!=first && i!=second) { sum += recursion(second,i,position+1, true); } } if(temp!=first && temp!=second) { sum += recursion(second,temp,position+1,false); } } dp[first][second][position][f] = sum; } return dp[first][second][position][f]; } } ll solve(ll y) { stringstream ss; ss << y; x = ss.str(); memset(dp,-1,sizeof(dp)); ll result = 1; int temp = x[0]-'0'; for(int i=1;i<=temp;i++) { result += recursion(i,i,1,i!=temp); } for(int i=2;i<=x.length();i++) { for(int j=1;j<10;j++) { result += recursion(j,j, i, true); } } return result; } int main() { cin>>a>>b; cout<<solve(b)-solve(a-1)<<"\n"; return 0; }

Compilation message (stderr)

numbers.cpp: In function 'long long int recursion(int, int, int, bool)':
numbers.cpp:9:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(position >= x.length()) {
                 ^
numbers.cpp: In function 'long long int solve(long long int)':
numbers.cpp:50:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=2;i<=x.length();i++) {
                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...