Skip to content

Instantly share code, notes, and snippets.

@mpampols
Created November 19, 2017 21:14
Show Gist options
  • Save mpampols/8721dd2d29f277ddea6f83e9b927432b to your computer and use it in GitHub Desktop.
Save mpampols/8721dd2d29f277ddea6f83e9b927432b to your computer and use it in GitHub Desktop.
Solución del grupo "josep_pon" de la Semic Challenge de la HackEPS 2017
#include <algorithm>
#include <iostream>
#include <fstream>
#include <string>
const unsigned MAX_NUM = 1000000;
const unsigned char NOT_KNOWN = 0;
const unsigned char KNOWN_GOOD = 1;
const unsigned char KNOWN_BAD = 2;
int reverse_integer(int n)
{
int reversed_number = 0;
int remainder;
while(n != 0)
{
remainder = n % 10;
reversed_number = reversed_number * 10 + remainder;
n /= 10;
}
return reversed_number;
}
bool is_super_reverse(int n)
{
if (n < 10) { return false; }
int rev = reverse_integer(n);
int sum = rev + n;
std::string str = std::to_string(sum);
return std::count(str.begin(), str.end(), str[0]) == str.size();
}
int main(int argc, char** argv)
{
int cases, begin, end;
int known_data[MAX_NUM];
int counter = 0;
for (int i = 0; i < MAX_NUM; ++i) {
if (is_super_reverse(i)) { counter += 1; }
known_data[i] = counter;
}
std::cin >> cases;
for (unsigned i = 0; i < cases; ++i) {
std::cin >> begin >> end;
int count = known_data[end] - known_data[begin];
if (is_super_reverse(begin)) { count += 1; }
std::cout << "Case #" << (i + 1) << ": " << count << std::endl;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment