首页 > 代码库 > HDU 1061 [Rightmost Digit] 数学方法
HDU 1061 [Rightmost Digit] 数学方法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1061
题目大意:求N^N的个位数
关键思想:对1个N来说,乘方时末尾会循环。对所有N来说,结果以20为周期。
代码如下(第一个思想):
//cnt为循环节长度 #include <iostream> #include <cmath> using namespace std; int main(){ int T; long long i,N,cnt; cin>>T; while(T--){ cin>>N; if(N%10==0){ cout<<0<<endl; continue; } long long t[100]; bool v[10]={false}; cnt=1,i=N; i%=10; while(!v[i]){ t[cnt++]=i; v[i]=true; i*=N; i%=10; } if(N%(cnt-1)==0)cout<<t[cnt-1]<<endl; else cout<<t[N%(cnt-1)]<<endl; } return 0; }
(第二种方法:打表)
#include <stdio.h> #include <cmath> int num[20] = {0,1,4,7,6,5,6,3,6,9,0,1,6,3,6,5,6,7,4,9}; int main() { int C; int n; scanf("%d", &C); while(C--) { scanf("%d", &n); printf("%d\n", num[n % 20]); } }
HDU 1061 [Rightmost Digit] 数学方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。