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. Mike and palindrome1000 / 思维