题解 CF791A 【Bear and Big Brother】

rui_er

2019-04-02 16:23:21

Solution

这一题是一个模拟算法。 我采用递归的方式解题。 # 头文件 没有什么特殊的。 ```cpp #include <iostream> ``` # 主函数 > 在主函数中只需要以下几件事: 1. 输入 2. 跑一遍递归函数 3. 输出 ```cpp int main() { int a, b; cin>>a>>b; cout<<f(a, b)<<endl; return 0; } ``` 可见递归函数是程序重点。 # 递归函数 首先,声明函数,一定要在main前面!!!```int f(int a, int b);``` 其次,在后面写函数。 - 如果已经满足条件(第一个数比第二个数大),则return 0。 - 否则次数加1,模拟下一年。这里次数就是返回值。 ```cpp int f(int a, int b) { if(a > b) return 0; else return 1 + f(3*a, 2*b); } ``` # 汇总 最后,把前面所有的合起来,得到: ```cpp #include <iostream> using namespace std; int f(int a, int b); int main() { int a, b; cin>>a>>b; cout<<f(a, b)<<endl; return 0; } int f(int a, int b) { if(a > b) return 0; else return 1 + f(3*a, 2*b); } ```