HDU 1097(m次幂的个位数 规律)
题意是求 n^m 结果的最后一位数。
可以用快速幂取模的方法做,当然本题还有更简单的方法:
所有数字( 0 - 9 )的 m 次幂的个位数不会受进位的影响,只收到乘数的影响,所以在结果中一旦出现之前出现过的数字即可以这两个数字之间的一段作为循环,0 - 9 最多十个数字,其循环的长度一定小于 10,计算发现各数字的规律如下:
0:0 ...
1:1 ...
2:2,4,8,6,2,...
3:3,9,7,1,3,...
4:4,6,4,...
5:5 ...
6:6 ...
7:7,9,3,1,7,...
8:8,4,2,6,8,...
9:9,1,9,...
还要注意 n 不一定是个位数,要记得取个位数。
代码如下:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))
{
if(!b)
{
puts("");
continue;
}
a %= ;
switch(a)
{
case :
puts(""); break;
case :
puts(""); break;
case :
switch(b%)
{
case : puts(""); break;
case : puts(""); break;
case : puts(""); break;
case : puts("");
} break;
case :
switch(b%)
{
case : puts(""); break;
case : puts(""); break;
case : puts(""); break;
case : puts("");
} break;
case :
printf("%d\n",b&?:); break;
case :
puts(""); break;
case :
puts(""); break;
case :
switch(b%)
{
case : puts(""); break;
case : puts(""); break;
case : puts(""); break;
case : puts("");
} break;
case :
switch(b%)
{
case : puts(""); break;
case : puts(""); break;
case : puts(""); break;
case : puts("");
} break;
case :
printf("%d\n",b&?:); break;
}
}
return ;
}
这是本人的比较繁琐的方法,别人优秀的做法如下:
#include <bits/stdc++.h>
using namespace std;
int d[] = {,,,,,,,,,};
int f[][]={{},{},{,,,},{,,,},{,},{},{},{,,,},{,,,},{,}};
int main(){
int a,b;
while(~scanf("%d%d",&a,&b))
printf("%d\n",f[a%][b%d[a%]]);
return ; }
HDU 1097(m次幂的个位数 规律)的更多相关文章
- hdu 2865 Polya计数+(矩阵 or 找规律 求C)
Birthday Toy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- hdu 1097 A hard puzzle 快速幂取模
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1097 分析:简单题,快速幂取模, 由于只要求输出最后一位,所以开始就可以直接mod10. /*A ha ...
- HDU 5793 A Boring Question (找规律 : 快速幂+逆元)
A Boring Question 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5793 Description Input The first l ...
- HDU 1097.A hard puzzle-快速幂/取模
快速幂: 代码: ll pow_mod(ll a,ll b){ ll ans=; while(b){ ==){ ans=ans*a%mo ...
- HDU 5793 A Boring Question ——(找规律,快速幂 + 求逆元)
参考博客:http://www.cnblogs.com/Sunshine-tcf/p/5737627.html. 说实话,官方博客的推导公式看不懂...只能按照别人一样打表找规律了...但是打表以后其 ...
- HDU 1097 快速幂
#include<iostream> using namespace std; long long quick(long long a,long long b,int c) { ; a=a ...
- HDU 1847 Good Luck in CET-4 Everybody!(规律,博弈)
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- HDU 4349 Xiao Ming's Hope 找规律
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4349 Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/ ...
- HDU 2855 (矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855 题目大意:求$S(n)=\sum_{k=0}^{n}C_{n}^{k}Fibonacci(k)$ ...
随机推荐
- 启发式合并&线段树合并/分裂&treap合并&splay合并
启发式合并 有\(n\)个集合,每次让你合并两个集合,或询问一个集合中是否存在某个元素. 我们可以用平衡树/set维护集合. 对于合并两个\(A,B\),如果\(|A|<|B|\),那么 ...
- 概念数据模型CDM基础
概念数据模型CDM 概念数据模型是设计数据库不可或缺的一步,是整个数据库设计的关键,CDM的主要作用如下: 1)能够真实地模拟真实世界,是需求分析人员和数据库设计人员沟通的桥梁.2)将系统需求分析得到 ...
- Min_25
可以用来筛出一个积性函数的前缀和.这个积性函数要满足当\(x\)是质数时,\(f(x)\)可以快速求出,\(f(x^k)\)也可以快速算出. 首先我们要处理出一个\(g(x)=\sum_{x\in p ...
- 【转】让浏览器格式化显示JSON数据之chrome jsonView插件安装
jsonView 用来让Chrome浏览器能格式化的显示JSON数据. 以上是网上找的方式,且试验成功! 步骤: 1.打开 https://github.com : 2.搜索 jsonView 链接: ...
- luogu5010 HMR的LIS III (dp+线段树)
这个东西和最长上升子序列很像 考虑如果已经知道每个位置为开头的LIS长度和个数 f[i],我可以扫一遍 判断这个个数和K的大小,找到第一个长度=len而且个数<K的,这个位置就是要选的 然后K- ...
- [APIO2013]机器人(斯坦纳树)
题目描述 VRI(Voltron 机器人学会)的工程师建造了 n 个机器人.任意两个兼容的机 器人站在同一个格子时可以合并为一个复合机器人. 我们把机器人用 1 至 n 编号(n ≤ 9).如果两个机 ...
- CentOS装个NTP时间同步服务器
服务端: driftfile /var/lib/ntp/drift restrict default nomodify notrap nopeer noquery restrict 127.0.0.1 ...
- nc 使用实例
nc.exe -h即可看到各参数的使用方法.基本格式:nc [-options] hostname port[s] [ports] ...nc -l -p port [options] [hostna ...
- JavaScript深入之词法作用域和动态作用域
作用域 作用域是指程序源代码中定义变量的区域. 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限. JavaScript 采用词法作用域,也就是静态作用域. 静态作用域与动态作用域 因 ...
- django2+uwsgi+nginx上线部署到服务器Ubuntu16.04(最新最详细版)
1.前期准备 1.打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用. pip freeze >requirements.txt 2.将项目文件夹→右键→添加压 ...