标签:就是 提取 ane space soj 描述 span names 有关
22 的 4 次方的运算结果为 234256,结果的个位数为 6
现请问 a 的 b 次方的运算结果的个位数是多少?
有多组测试数据,每组测试数据在一行上
在每组数据中,有以 pow(a,b) 的形式呈现的一个正整数 a 和另一个非负整数 b ( a 与 b 都不超过 2,147,483,647 )
a 的 b 次方的运算结果的个位数
pow(2,3)
pow(22,4)
pow(2147483646,2147483646)
8
6
6
只能依靠数组进行处理,这题数据加强版只能找一个巧妙地方法,我是用打表的方式,下面就附上我的代码
说明一下这中幂运算的个位数的最后数值只与之前个位数以及次方有关所以我只先写出这种规律然后找到就好了
代码:
1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 using namespace std; 5 int num[10][10]={{0,0,0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1,1,1},{2,4,8,6,2,4,8,6,2,4}, 6 {3,9,7,1,3,9,7,1,3,9},{4,6,4,6,4,6,4,6,4,6},{5,5,5,5,5,5,5,5,5,5}, 7 {6,6,6,6,6,6,6,6,6,6},{7,9,3,1,7,9,3,1,7,9},{8,4,2,6,8,4,2,6,8,4},{9,1,9,1,9,1,9,1,9,1}}; 8 int main() 9 { 10 long long result; 11 long long a; 12 long long b; 13 int n; 14 string arr; 15 int k,t; 16 int brr[40]; 17 while(cin>>arr){ 18 memset(brr,0,sizeof(brr)); 19 for(int i=0;i<arr.size();i++) 20 { 21 if(arr[i]>=‘0‘&&arr[i]<=‘9‘){ 22 brr[i]=arr[i]-‘0‘; 23 t=i; 24 } 25 26 if(arr[i]==‘,‘){ 27 k=i; 28 } 29 30 } 31 a=0;b=0; 32 for(int j=4;j<k;j++) 33 { 34 a+=brr[j]; 35 a*=10; 36 } 37 a/=10; 38 for(int j=k+1;j<=t;j++) 39 { 40 b+=brr[j]; 41 b*=10; 42 } 43 b/=10; 44 int x1=a%10; 45 int x2=(b%10)-1; 46 if(x2<0) 47 cout<<num[x1][10]<<endl; 48 else 49 cout<<num[x1][x2]<<endl; 50 } 51 return 0; 52 }
标签:就是 提取 ane space soj 描述 span names 有关
原文地址:https://www.cnblogs.com/acmblog/p/9536321.html