icpc:problems:701a_add_and_divide
目录
problems | |
---|---|
名称 | Add and Divide |
题目编号 | 701A |
题目链接 | codeforces.com/… |
来源 | CodeForces |
算法分类 | 数学 |
难易程度 | 小有难度 |
Add and Divide
想法
没想法。数学题。
这道题的第一个操作与第二个操作顺序是不影响结果的,一般想到这个这道题就结束了。
因为步骤1,最多30步怎么着都能结束,所以我们就调整第2步,先给他从1到30来个增量枚举,然后再去除。取最优就行了。
代码实现
#include<cstdio>//uncle-lu 701 a #include<algorithm> template<class T>void read(T &x) { x=0;int f=0;char ch=getchar(); while(ch<'0'||ch>'9') { f|=(ch=='-'); ch=getchar(); } while(ch<='9'&&ch>='0') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } x = f ? -x : x; return ; } int main() { int a, b, T, A; read(T); for (int t = 1; t <= T; t++) { read(a);read(b); int ans = 0x7f7f7f; bool flag = false; if(b == 1) { b++; flag = true; } for(int B=0; B<=30; ++B) { int cnt = B; A = a; while(A) { A/=(b+B); cnt++; } ans = std::min(ans, cnt); } if(flag) ans++; printf("%d\n", ans); } return 0; }
/app/www/public/data/pages/icpc/problems/701a_add_and_divide.txt · 最后更改: 2023/10/01 10:59 由 温婕莺