我的代码,感觉没什么问题,也从1-10测试过,但是一直不给AC,并不知道什么原因
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n=0;//准备输入的次数
int a=0;// the input
int copyA=0;//用来计数
int sum=1;//求和
cin>>n;
while(n!=0)
{
cin>>a;
if(a==0)
{
cout<<1<<endl;
}
else
{
copyA=a;
a=a%10;
copyA=copyA%4;
if(copyA!=0)
{
while(copyA>0)
{
sum=sum*a;
copyA--;
}
}
else
{
sum=sum*a*a*a*a;
}
cout<<sum%10<<endl;
}
n--;
}
}
下面是网上找的代码已经AC。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, m;
cin >> n;
m = n % 4;
if (m == 0)
m = 4;
n = n % 10;
cout <<int( pow(n, m)) % 10 << endl;
}
return 0;
}
后面对照博主的代码把自定义乘方换成pow函数 杭电OJ就给过了
#include <iostream>
#include<math.h>
using namespace std;
int main(int argc, char** argv) {
int n=0;//准备输入的次数
int a=0;// the input
int copyA=0;//用来计数
int sum=1;//求和
cin>>n;
while(n!=0)
{
cin>>a;
copyA=a;
a=a%10;
copyA=copyA%4;
if(copyA!=0)
{
sum=pow(a,copyA);
}
else
{
sum=pow(a,4);
}
cout<<sum%10<<endl;
}
n--;
}
提示:此种题目一定不能暴力直接求,不然一定time exceed。