HDOJ 1001:Rightmost Digit(n^n最后一位)

来源:互联网 发布:java long 长度 编辑:程序博客网 时间:2024/06/08 07:01

问题及代码:

/* * Copyright (c)2015, 烟台大学计算机学院 * All rightsreserved. * 文件名称: x.cpp * 作者    : 李楠 * 完成日期: 2015年5月28日 * 版本号  : v1.0 * 问题描述: Given a positive integer N, you should output the most right digit of N^N.* 输入描述: The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.             Each test case contains a single positive integer N(1<=N<=1,000,000,000). * 程序输出: For each test case, you should output the rightmost digit of N^N.             Sample Input             2             3             4             Sample Output             7             6             Hint             In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7.             In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6*/#include <iostream>using namespace std;int main(){    int num;    int n,f,p,l;    cin>>num;    while(num--)    {        cin>>n;        f=n%10;        if(n%4==0)        {            n=4;        }        else            n=n%4;        l=1;//必须写在里面!!因为每次循环都要保证l在此处为1        for(int i=0;i<n;++i)            l=l*f;        p=l%10;        cout<<p<<endl;    }    return 0;}

运行结果:



知识点总结:

一般我们想到的求最后一位的方法是最后一位相乘,但如果数据很大的时候求n^n就会超时了,所以一般这种大数据的题就需要找规律了

我们发现2^1  2    2^2   4    2^3   8     2^4   6    2^5   2   2^6   4

                3^1  3    3^2   9    3^3   7     3^4   1    3^5   3   3^6   9

                4^1  4    4^2   6    4^3   4     4^4   6    4^5   4   4^6   6

                5^1  5    5^2   5    5^3   5     5^4   5    5^5   5   5^6   5

                归纳以下可得任何数的n次幂的个位都有一个周期是4




0 0
原创粉丝点击