Ranking (as of 2014-07-26): 237 out of 1017
Language: C++
/*
UVa 471 - Magic Numbers
To build using Visual Studio 2012:
cl -EHsc -O2 UVa_471_Magic_Numbers.cpp
*/
#include <iostream>
using namespace std;
bool is_digits_repeated(long long n)
{
unsigned int digits = 0; // i-th bit is '1' if digit of i (0 - 9) exists in n
do {
int d = 1 << static_cast<int>(n % 10);
if (digits & d)
return true;
n /= 10;
digits |= d;
} while (n);
return false;
}
int main()
{
const long long s1_max = 9876543210LL;
int t;
cin >> t;
while (t--) {
long long N;
cin >> N;
for (long long s2 = 1, s2_max = s1_max / N; s2 <= s2_max; s2++)
if (!is_digits_repeated(s2)) {
long long s1 = s2 * N;
if (!is_digits_repeated(s1))
cout << s1 << " / " << s2 << " = " << N << endl;
}
if (t)
cout << endl;
}
return 0;
}
No comments:
Post a Comment