Advertisement
Infiniti_Inter

Equal Digit's

Sep 13th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #define all(a) (a).begin(), (a).end()
  2. #define ret return
  3. #include <iostream>
  4. #include <stdio.h>
  5. #include <cstdio>
  6. #include <vector>
  7. #include <map>
  8. #include <set>
  9. #include <string>
  10. #include <algorithm>
  11. #include <cmath>
  12.  
  13. using namespace std;
  14.  
  15.  
  16. int main()
  17. {
  18.     long long n; cin >> n;
  19.     int d; cin >> d;
  20.     if (n == 0 && d == 0){
  21.         cout << 2 << ' ' << 1;
  22.         ret 0;
  23.     }
  24.     if (n < d){
  25.         cout << 2 << ' ' << 0;
  26.         ret 0;
  27.     }
  28.     if (n == d)
  29.     {
  30.         cout << n + 1 << ' ' << 1;
  31.         ret 0;
  32.     }
  33.     long long x = n - d;
  34.     int ans = 0; long long pos = 2;
  35.     vector< long long> D;
  36.     for (long long i = 2; i*i < x; ++i)
  37.     {
  38.         if (x % i == 0)
  39.         {
  40.             D.push_back(i);
  41.             if (i*i != x)
  42.                 D.push_back(x / i);
  43.         }
  44.     }
  45.     D.push_back(x);
  46.     sort(all(D));
  47.     for (int i = 0; i < D.size(); ++i)
  48.     {
  49.         if (D[i] == 1)continue;
  50.         long long k = D[i];
  51.         long long cur = n;
  52.         int cnt = 0;
  53.         while (cur && cur % k == d)
  54.         {
  55.             cnt++;
  56.             cur/= k;
  57.         }
  58.         if (ans < cnt)
  59.         {
  60.             ans = cnt;
  61.             pos = k;
  62.         }
  63.     }
  64.     cout << pos << ' ' << ans;
  65.  
  66.     //system("pause");
  67.     ret 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement