jueves, 12 de julio de 2012

471 - Magic Numbers, uva

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<set>
#include<map>
#define db(a) \
cout << #a << " = " << a << endl
#define db2(a, b) \
cout << #a << " = " << a << " " << #b << " = " << b << endl
#define inf (1<<30)
#define foreach(it, m) \
for (typeof(m.begin()) it = m.begin(); it != m.end(); it++)
using namespace std;
bool has_repeated_digits(long long int s) {
 int mask = 0;
 while (s) {
  if (mask & (1 << (s % 10)))
   return true;
  mask |= 1 << (s % 10);
  s /= 10;
 }
 return false;
}

int main() {
 #ifdef dennisbot
  freopen("in.in", "r", stdin);
  freopen("ou.out", "w", stdout);
 #endif
 int t;
 long long int max_s1 = 9876543210, s1, s2, max_s2, N;
 scanf("%d", &t);
 for (; t--;) {
  scanf("%lld", &N);
  max_s2 = max_s1 / N;
  for (s2 = 1; s2 <= max_s2; s2++) {
   if (has_repeated_digits(s2)) continue;
   s1 = s2 * N;
   if (has_repeated_digits(s1)) continue;
   printf("%lld / %lld = %lld\n", s1, s2, N);
  }
  if (t)
   puts("");
 }
 return 0;
}

here is the statement

No hay comentarios:

Publicar un comentario