A. Add and Divide1000 / 思维

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A. Add and Divide1000 / 思维相关的知识,希望对你有一定的参考价值。


https://codeforces.com/problemset/problem/1485/A
除法和乘法等价的,要想a/b=0 其b必须大于a 即题目问的是b乘以几次大于a 最后再加上 a/b 的最后一次即可。
问题是: b是可以加的,那么何时乘b最优呢? 直接暴力枚举所有的b即可。 因为 231>1e9 故我们的b不会很大。
故直接枚举 b<x<b+30 即可

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
int main(void)
{
	int t,a,b;
	cin>>t;
	while(t--)
	{
		cin>>a>>b;
		LL ans=1e9;
		for(int i=max(2,b);i<=b+30;i++)
		{
			LL sum=i;
			LL cnt=0;
			while(sum<=a) sum*=i,cnt++; 
			ans=min(ans,cnt+1+i-b);//cnt 是乘的次数  i-b是加的次数  +1是最后一次 除的次数 
		}
		cout<<ans<<endl;
	}
	return 0;
}

以上是关于A. Add and Divide1000 / 思维的主要内容,如果未能解决你的问题,请参考以下文章

Divide by Zero 2021 and Codeforces Round #714 (Div. 2) C Add One题解(预处理)(详细注释)

A. Petr and Book1000 / 模拟

A. Mike and palindrome1000 / 思维

A. Dreamoon and Stairs1000 / 暴力

A. Dima and Friends1000 / 思维

A. Jzzhu and Children1000 / 模拟