Submission #369279

#TimeUsernameProblemLanguageResultExecution timeMemory
369279Sparky_09Palindrome-Free Numbers (BOI13_numbers)C++17
100 / 100
1 ms512 KiB
#include "bits/stdc++.h" using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define trav(a, x) for(auto& a : x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair<ll, ll> pii; typedef vector<ll> vi; typedef vector<pii> vpi; int rd() { int result = 0; char ch; ch = getchar(); while(ch < '0' || ch > '9') ch = getchar(); result = ch-'0'; while (true) { ch = getchar(); if (ch < '0' || ch > '9') break; result = result*10 + (ch - '0'); } return result; } template<class T> bool ckmin(T& a, const T& b) { return a > b ? a = b, 1 : 0; } template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; } void usaco(string s){ freopen((s+".in").c_str(), "r", stdin); freopen((s+".out").c_str(), "w", stdout); } int a[70], len; ll x, y, f[70][11][11]; ll dfs(int now, int pre, int ppre, int st, int limit) { if(!now) return 1; if(!limit && ~f[now][pre][ppre]) return f[now][pre][ppre]; ll ret = 0; int Max = limit ? a[now] : 9; for(int i = 0; i <= Max; ++i){ if(st && !i) ret += dfs(now - 1, 10, 10, st, limit && (i == Max)); else if(i == ppre || i == pre) continue; else ret += dfs(now - 1, i, pre, 0, limit && (i == Max)); } if(!limit && !st) f[now][pre][ppre] = ret; return ret; } ll work(ll x) { if(x < 0) return 0; len = 0; while(x) a[++len] = x % 10, x /= 10; memset(f, -1, sizeof(f)); return dfs(len, 10, 10, 1, 1); } int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); #ifdef LOCAL_DEFINE freopen("input.txt", "r", stdin); #endif cin >> x >> y; cout << work(y) - work(x-1) << '\n'; }

Compilation message (stderr)

numbers.cpp: In function 'void usaco(std::string)':
numbers.cpp:30:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   30 |   freopen((s+".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
numbers.cpp:31:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   31 |   freopen((s+".out").c_str(), "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...