Skip to content

Instantly share code, notes, and snippets.

@yurahuna
Created August 28, 2016 21:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yurahuna/39a36caf8636e121531a40238ae9e1d0 to your computer and use it in GitHub Desktop.
Save yurahuna/39a36caf8636e121531a40238ae9e1d0 to your computer and use it in GitHub Desktop.
#include <bits/stdc++.h>
using namespace std;
#define int long long // <-----!!!!!!!!!!!!!!!!!!!
#define rep(i,n) for (int i=0;i<(n);i++)
#define rep2(i,a,b) for (int i=(a);i<(b);i++)
#define rrep(i,n) for (int i=(n)-1;i>=0;i--)
#define rrep2(i,a,b) for (int i=(b)-1;i>=(a);i--)
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define printV(v) for(auto&& x : v){cout << x << " ";} cout << endl
#define printVV(vv) for(auto&& v : vv){for(auto&& x : v){cout << x << " ";}cout << endl;}
#define printP(p) cout << p.first << " " << p.second << endl
#define printVP(vp) for(auto&& p : vp) printP(p);
typedef long long ll;
typedef pair<int, int> Pii;
typedef tuple<int, int, int> TUPLE;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef vector<Pii> vp;
// const int inf = 1e9;
const int inf = 1e12;
const int mod = 1e9 + 7;
typedef vector<vector<int>> Graph;
int f(int b, int n) {
if (n < b) return n;
return f(b, n / b) + n % b;
}
signed main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int n, s;
cin >> n >> s;
if (n == s) {
cout << n + 1 << endl;
return 0; // <----!!!!!!!!!!!!!
}
// b <= sqrt(n) は全探索
for (int b = 2; b * b <= n; b++) {
if (f(b, n) == s) {
cout << b << endl;
return 0;
}
}
// b > sqrt(n)のとき
// nはb進数で高々2桁なので、 <---!!!!!!!!!
// n = pb+q
// s = p+q
// -> n-s = p(b-1)
// ∴ bはn-sの約数+1
int ans = inf;
for (int d = 1; d * d <= n - s; d++) {
if ((n - s) % d == 0) {
int b = d + 1;
if (f(b, n) == s) {
ans = min(ans, b);
}
b = (n - s) / d + 1;
if (f(b, n) == s) {
ans = min(ans, b);
}
}
}
cout << (ans == inf ? -1 : ans) << endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment