Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- typedef long long ll;
- #define endl '\n'
- //#define int ll
- using namespace std;
- const int N=100010;
- const ll mod=1000000000000000001ll;
- void solve(){
- ll n,k;cin>>n>>k;
- if (k==1){
- n*=2ll;
- for (ll b=2;b*(b+1)<=n;b++){
- if (n%b) continue;
- ll a=n/b-(b+1);
- if (a%2) continue;
- a/=2ll;
- cout<<a+1<<" "<<a+b+1<<endl;
- return;
- }
- cout<<"-1 -1\n";
- return;
- }
- if (k==2){
- for (ll b=1;b*(b+1)*(2ll*b+1ll)/6ll<=n;b++){
- ll c=b*(b+1ll)*(b+b+1ll)/6ll-n;
- if (c%b) continue;
- c/=b;
- ll D=(b+1)*(b+1)-4ll*c;
- if (D<0) continue;
- ll g=sqrt(D);
- if (g*g!=D) continue;
- if ((g-b-1)%2) continue;
- ll a=(g-b-1)/2ll;
- if (a<0 || a>=n-1) continue;
- cout<<a+1<<" "<<a+b+1<<endl;
- return;
- }
- cout<<"-1 -1\n";
- return;
- }
- vector<ll>v;
- map<ll,ll>L;
- L[0]=1;
- ll sum=0ll;
- for (ll i=1;;i++){
- ll cur=1;
- for (int j=0;j<k;j++) cur*=i;
- if (cur>n) break;
- sum+=cur;
- sum%=mod;
- if (L[(sum+mod-n%mod)%mod]){
- cout<<L[(sum+mod-n%mod)%mod]<<" "<<i+1<<endl;
- return;
- }
- L[sum]=i+1;
- }
- cout<<"-1 -1\n";
- }
- int32_t main()
- {
- srand(time(NULL));
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int tt;cin>>tt;
- while (tt--){
- solve();
- }
- return 0;
- }
- //1 2 3 4 5
- // 2 3 4 4 3 2
- //1 1 1 1 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement