牛客网 G-简单题的逆袭

链接:https://ac.nowcoder.com/acm/contest/10746/G
来源:牛客网

题目描述
给定x,y,找出满足方程 xk≤y的最大的k

输入描述:

第一行一个 t,1≤t≤300代表测试数据的组数

每组输入只有一行,包含两个整数 x,y

0≤x,y≤10^18

输出描述:
每个测试数据在一行中输出一个整数k,若k不存在或者无限大,输出 “-1”

示例1
输入

2
2 3
0 0

输出

1
-1

解题思路: 本人一开始用的是pow(x,k),让本来就是long long的数字难上加难,最后只好思路倒转,一个一个乘上去。

#include
#include
using namespace std;
int main()
{
     
	long long int i,x,y,k=0,n,ss;
	cin>>n;
	while(n--)
	{
     
		cin>>x>>y;
		k=0;
		if(x<=1||!y)//无限或者不可能
		{
     
			cout<<-1<<endl;
			continue;
		}
		ss=1;
		while(ss<=y/x)
		{
     
			ss*=x;
			k++;
		
		}
		cout<<k<<endl;
	}
	return 0;
}

你可能感兴趣的:(牛客网,c++,ACM,c语言,暴力算法)