Submission #552395

#TimeUsernameProblemLanguageResultExecution timeMemory
552395LeSonnnPalindrome-Free Numbers (BOI13_numbers)C++17
100 / 100
1 ms596 KiB
#include<bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for(int i=a;i<=b;i++)
const int maxN=1e6+68;
long long dp[68][2][2][12][12];
string a,b;
long long Cal(long long x,bool kta,bool ktb,long long last,long long prelast,bool check)
{
    if(x>=a.size()) return 1;
    long long& tg=dp[x][kta][ktb][last][prelast];
    if(tg!=-1) return tg;
    tg=0;
    long long l=0,r=9;
    if(kta) l=a[x]-'0';
    if(ktb) r=b[x]-'0';
    FOR(i,l,r)
    {
        bool checka=kta&&(i==l);
        bool checkb=ktb&&(i==r);
        if(!check&&i==0)
        {
            tg+=Cal(x+1,checka,checkb,last,prelast,check);
        }
        else if(i!=last&&i!=prelast)
        {
            tg+=Cal(x+1,checka,checkb,i,last,true);
        }
    }
    return tg;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
    if(fopen("PFNUM.inp","r"))
    {
        freopen("PFNUM.inp","r",stdin);
        freopen("PFNUM.out","w",stdout);
    }
    cin>>a>>b;
    while(a.size()<b.size()) a='0'+a;
    while(a.size()>b.size()) b='0'+b;
    memset(dp,-1,sizeof(dp));
    cout<<Cal(0,true,true,10,10,false);
}

Compilation message (stderr)

numbers.cpp: In function 'long long int Cal(long long int, bool, bool, long long int, long long int, bool)':
numbers.cpp:9:9: 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]
    9 |     if(x>=a.size()) return 1;
      |        ~^~~~~~~~~~
numbers.cpp: In function 'int main()':
numbers.cpp:37:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |         freopen("PFNUM.inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
numbers.cpp:38:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |         freopen("PFNUM.out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...