Submission #723802

#TimeUsernameProblemLanguageResultExecution timeMemory
723802JuanPalindrome-Free Numbers (BOI13_numbers)C++14
100 / 100
1 ms240 KiB
#include<bits/stdc++.h> using namespace std; #define int long long int solve(int n){ if(n<10) return n+1; if(n<100) return n+1 - n/11; int rt = 0; string s = to_string(n); for(int i = 1; i < s.size(); i++){ int val, sz = s.size()-i; if(sz>=2) val = 81 * pow(8, sz-2); else if(sz==1) val = 10; rt += val; } rt += (s[0]-'0'-1) * 9 * pow(8, s.size()-2); for(int i = 1; i < s.size(); i++){ int niii=10; int ni = s[i]-'0'; int nii = s[i-1]-'0'; if(i>=2) niii = s[i-2]-'0'; rt += (ni -(nii<ni) -(niii<ni)) * pow(8, max(0LL, (int)s.size()-i-1)); if((i>=1 && s[i]==s[i-1]) || (i>=2 && s[i]==s[i-2])) break; if(i==s.size()-1) rt++; } return rt; } int32_t main(){ int a, b; cin >> a >> b; cout << solve(b) - solve(a-1) << '\n'; }

Compilation message (stderr)

numbers.cpp: In function 'long long int solve(long long int)':
numbers.cpp:12:19: 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]
   12 |  for(int i = 1; i < s.size(); i++){
      |                 ~~^~~~~~~~~~
numbers.cpp:22:19: 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]
   22 |  for(int i = 1; i < s.size(); i++){
      |                 ~~^~~~~~~~~~
numbers.cpp:30:7: 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]
   30 |   if(i==s.size()-1) rt++;
      |      ~^~~~~~~~~~~~
numbers.cpp:16:6: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
   16 |   rt += val;
      |   ~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...