ACM第二次考核(部分)题解

写在最前面,计算机题目,大多数考察的都是思维能力,首先要完整的将题目多读两遍,明确题目的目的,然后再结合样例输入输出检测自己的想法是否是正确的;

A题:

考察点:快速幂的运用;

ACM第二次考核(部分)题解

ACM第二次考核(部分)题解

 

 分析:

初始速度为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题:

考察点:递归思维;

ACM第二次考核(部分)题解分析:

 这种考察思维的题,看完题目后去看样例输入输出对思维启发会有很大帮助,我们可以看到:

1只

上一篇:Python 中 os 模块中常用函数和常量(中)


下一篇:暑假ACM训练计划