fork(2) download
  1. #include <stdio.h>
  2. #include <bitset>
  3. #define MAX_VAL 10000000000000000
  4. #define MAX_EXPONENT 16 * 4 //log 2 (10^16)
  5.  
  6. typedef long long llong;
  7.  
  8. using namespace std;
  9.  
  10. int main (void) {
  11. bitset<MAX_EXPONENT> exponents;
  12. int t, k, exponent;
  13. llong temp, aux;
  14. size_t n;
  15. bool possible;
  16. scanf ("%d", &t);
  17. while (t--) {
  18. possible = true;
  19. scanf ("%d%d", &n, &k);
  20. //read numbers
  21. for (int i = 0; i < n; i++) {
  22. scanf ("%ld", &temp);
  23. if (possible) {
  24. //get exponents of k
  25. while (temp != 0) {
  26. aux = 1;
  27. exponent = 0;
  28. while (aux * k <= temp) {
  29. aux *= k;
  30. exponent++;
  31. }
  32. if (exponents.test(exponent)) {
  33. possible = false;
  34. break;
  35. }
  36. exponents.set(exponent);
  37. temp -= aux;
  38. }
  39. }
  40. }
  41. getchar();
  42. printf(possible ? "YES" : "NO");
  43. printf("\n");
  44. exponents.reset();
  45. }
  46. return 0;
  47. }
  48.  
Time limit exceeded #stdin #stdout 5s 4380KB
stdin
5
4 100
0 0 0 0
1 2
1
3 4
1 4 1
3 2
0 1 3
3 9
0 59049 810
stdout
Standard output is empty