今天这个题我又又又是看大佬的题解。原因是我的暴力想法超时了…………
大家可以先搜索一下什么是快速幂。(我看完之后了解的快速幂,就是通过放大底数以达到减小指数从而大幅减少运算次数的方法)
这里就不赘述了,题目是这样的:
对了,再啰嗦几句,由于这个题的数据量很大并且他只需要输出个位,所以我们在每次进行完一次操作后都应该对10取模。这样以保证不会越过int的范围。
#include<iostream> #include<cstring> using namespace std; int cul(int base,int power){ int result = 1; base %= 10; //防止超过数据的范围 while(power > 0){ if(power & 1 == 1){ result = result * base % 10; } power >>= 1; base = base * base % 10; } return result; } int main() { int n; int m; cin>>n; for(int i = 0;i < n;i++){ cin>>m; cout<<cul(m,m)<<endl; } return 0; }
好了 这样这道题就结束了。
本题好收获了一个东西。判断一个数是奇数还是偶数是,让这个数和1按位与。这样更快。
好了 小灰灰继续加油!!!!!!!!!!!!!!!!
标签:Status,10,oj,power,Realtime,int,base,result From: https://www.cnblogs.com/fighting-huihui/p/17280362.html