51nod n^n的末位数字(快速幂||找循环节)
2018-01-11 12:58
507 查看
给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。
Input 一个数N(1 <= N <= 10^9) Output 输出N^N的末位数字 Sample Input
Input 一个数N(1 <= N <= 10^9) Output 输出N^N的末位数字 Sample Input
13Sample Output
3方法很多:快速幂可以,找循环节也可以。快速幂:
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define LL long long int pow(LL a,LL b) { int ans=1; while(b) { if(b&1) ans=(ans*a)%10; a=(a*a)%10;//a*a会爆int,所以用long long,不用long long也可以,a进来的时候取余10就行 b>>=1; } return ans; } int main() { LL n; scanf("%lld",&n); printf("%d\n",pow(n,n)); }找寻环节:
#include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; int ans[1000000]; int main() { long long a; scanf("%lld",&a); int b=a%10; ans[0]=a%10; // if(b==0) printf("0\n");//注释的这几行可有可无 // else // { int i; for(i=1;i<a;i++) { ans[i]=(ans[i-1]*b)%10; if(ans[i]==b) break; } // if(i==a) printf("%d\n",ans[i-1]); // else if(i==1) printf("%d\n",b); // else // { if(a%i==0) printf("%d\n",ans[i-1]); else printf("%d\n",ans[a%(i)-1]); // } // } }
相关文章推荐
- 51Nod-1004 n^n的末位数字【快速模幂】
- 51nod 1004 n^n的末位数字(快速幂)
- 51Nod 1004 n^n的末位数字(日常复习快速幂,莫名的有毒,卡mod值)
- 51Nod 1004 n^n的末位数字(快速幂)
- 【51Nod】1004 n^n的末位数字
- 51nod 1004:n^n的末位数字
- 51Nod 1004 n^n的末位数字
- n^n的末位数字 51Nod - 1004
- 51nod 1004 n^n的末位数字
- 51Nod 1004 n^n的末位数字
- 51nod 1004 n^n的末位数字
- 51nod 1004 n^n的末位数字
- 51nod 1004 n^n的末位数字
- 51NOD 1004 n^n的末位数字
- 51nod 1004 n^n的末位数字
- 51nod --1004 n^n的末位数字(一级算法题)
- 51Nod 1004 n^n末尾数字 | 快速幂
- n^n的末位数字(快速幂)
- 51Nod--1004 n^n的末位数字
- 51Nod 1004 n^n的末位数字()