写在最前面,计算机题目,大多数考察的都是思维能力,首先要完整的将题目多读两遍,明确题目的目的,然后再结合样例输入输出检测自己的想法是否是正确的;
A题:
考察点:快速幂的运用;
分析:
初始速度为1,每次脚踩脚会让速度翻倍,即乘以二,踩了n次,那么最后的速度就是2^n米每秒,如果用传统的方法那么时间复杂度为O(n),由于时间限制是400ms,当n过大时,运行就会超时,所以正确做法是使用快速幂,就可以将时间复杂度降低,代码如下:
#include<bits/stdc++.h>
using namespace std;
#define p 299792458
int main()
{
int n;
scanf("%d",&n);
long long base=2;
long long result=1;
while(n>0){
if(n&1){
result=(result%p*base%p)%p;
}
n>>=1;
base=(base*base)%p;
}
printf("%lld\n",result);
}
B题:
考察点:递归思维;
分析:
这种考察思维的题,看完题目后去看样例输入输出对思维启发会有很大帮助,我们可以看到:
1只