震惊! Rightmost Digit 快速幂解决

题目

Given a positive integer N, you should output the most right digit of N^N.

Input

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).

Output

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.

分析

1.快速幂
先看看怎么求a的a次方更快:
这里写图片描述

你看,只有指数对应的位为1,才相乘
而且每个乘的数都有规律,
假设a^2^0=c,a^2^1=c*c=c1,
a^2^2=c1*c1
那就用一个数存c,然后循环乘就行,
至于什么时候算在最终结果之内,只要看指数对应的位是否为一

int poww(int a,int b){int ans=1,base=a;while(b!=0){if(b&1!=0)ans*=base;base*=base;b>>=1;}return ans;
}

我解释不太清楚,看看别人怎么解释的吧

由于是二进制,很自然地想到用位运算这个强大的工具: & 和 >> ,&运算通常用于二进制取位操作,例如一个数 & 1 的结果就是取二进制的最末位。还可以判断奇偶x&1==0为偶,x&1==1为奇。>>运算比较单纯,二进制去掉最后一位

以b==11为例,b=>1011,二进制从右向左算,但乘出来的顺序是 a^(2^0) * a^(2^1) * a^(2^3),是从左向右的。我们不断的让base*=base目的即是累乘,以便随时对ans做出贡献。

  其中要理解base*=base这一步,看:::base*base==base^2,下一步再乘,就是base^2*base^2==base^4,然后同理 base^4 * base4 = base^8 ,,,,, see?是不是做到了base–>base^2–>base^4–>base^8–>base^16–>base^32…….指数正是 2^i 啊,再看上面的例子,a¹¹ = a^(2^0) * a^(2^1) * a^(2^3),这三项是不是完美解决了,,嗯,快速幂就是这样。

2.取模运算
定理:
(a*b)%c=(a%c)*(b%c)%c

于是,求最后n位

int quick(int a,int b,int c)  
{  int ans=1;   //记录结果  a=a%c;   //预处理,使得a处于c的数据范围之下  while(b!=0)  {  if(b&1) ans=(ans*a)%c;   //如果b的二进制位不是0,那么我们的结果是要参与运算的  b>>=1;    //二进制的移位操作,相当于每次除以2,用二进制看,就是我们不断的遍历b的二进制位  a=(a*a)%c;   //不断的加倍  }  return ans;  
}  

本题代码

#include<iostream>
using namespace std;int quick(int a,int b,int n)  
{  int ans =1;a=a%n;while(b!=0){if(b&1)ans=(ans*a)%n;a=a*a%n;b>>=1;} return ans;
}  
int main(){int n,a;cin>>n;while(n--){cin>>a;cout<<quick(a,a,10)<<endl;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android handler同步,android解决:使用多线程和Handler同步更新UI

如果运行时&#xff0c;可以看到滚动条由条慢慢变短&#xff0c;则说明程序成功了。截图如下&#xff0c;建议选择大点的文件做测试。main.xmlxmlns:android"http://schemas.android.com/apk/res/android"android:layout_height"wrap_content" android:id&…

html玫瑰花效果代码,html5渲染3D玫瑰花情人节礼物js特效代码

情人节马上就要到来了&#xff0c;这里给程序员前端设计师们献上一个&#xff0c;html5渲染而成的3D玫瑰花js效果&#xff0c;可以作为虚拟的情人节礼物送给自己的爱人。支持html5的浏览器查看。查看演示下载资源&#xff1a;16次 下载资源下载积分&#xff1a;20积分情人节玫瑰…

html 页面怎么加载富文本,UILabel加载html富文本

本文主要解决html标签之外文本属性设置当APP里面有搜索的需求的时候&#xff0c;产品可能会要求关键字显示特殊颜色或者字体。其中一种可能性是服务器返回的数据是带有html标签的字符串&#xff0c;那么该怎么解决&#xff1f;当标签之外的其他字体也需要设置不同格式&#xff…

python 打印皮卡丘_用python打印你的宠物小精灵吧

我们来通过一个有趣的例子开始编写我们的第一个python代码。本文涉及的python基础语法为&#xff1a;print输出函数&#xff0c;赋值&#xff0c;字符串print()print()是python的一个内置函数&#xff0c;用于打印输出&#xff0c;是最常见的一个函数之一。有些朋友可能对于打印…

360浏览器查看html文件在哪里,360浏览器8菜单栏怎么弄出来?如何查看网站源代码...

今天想查看一个页面的源代码&#xff0c;没想到这个页面竟然禁止了鼠标右键功能&#xff0c;所以无法通过鼠标右键选择“查看源代码”来查看。然后就想通过 360 浏览器的“查看源代码”按钮进行查看&#xff0c;没想到找了半天都找不到这个按钮&#xff0c;最后只能通过查看源代…

判断html()中有长度,VBS 字符串长度判断的问题

对于给你一个字符串你应该怎样判断他的字符串长度&#xff0c;试举一些典型的例子C语言——字符串长度的计算方法提示&#xff1a;(1)计算字符串长度时关键是要注意辨认转义字符&#xff1b;(2)一个转义字符总是以反斜杠开始&#xff0c;再加一个其他字符组成。所以&#xff0c…

计算机专业后悔么,王言匀

《中华独特疗法大成》分方法和治疗两篇。方法篇依据用药与否&#xff0c;分为药物疗法和非药物疗法两章&#xff0c;药物疗法按照给药途径分为内服法和外用法两节&#xff1b;非药物疗法根据施术手段分为针灸、推拿、气功及其他4节。这些章节介绍了273种治疗方法的基本内容、适…

应用计算机散热的原理是什么,水冷散热器是什么原理?水冷可以带给机箱多大的散热作用?...

用户若是CPU安装了水冷散热器&#xff0c;就可以利用水快速导热和散热的特性加强主机硬件的散热效果&#xff0c;和普通风扇的散热效果相比&#xff0c;水冷可以更加有效的降低硬件温度和热量散发速度。阅读下文了解水冷散热器的原理和作用。CPU水冷散热器是指使用液体在泵的带…

计算机办公应用软件初级,电脑办公软件有哪些?桌面便签办公软件基础教程

原标题&#xff1a;电脑办公软件有哪些&#xff1f;桌面便签办公软件基础教程Windows电脑上的办公软件有很多&#xff0c;很多网友都觉得电脑上用的桌面便签小工具不算办公软件&#xff0c;其实只要是对工作有帮助的电脑程序&#xff0c;在某种程度上来说都可以说是办公小工具软…

电脑开机启动修复无法自动修复此计算机,Win7系统开机无法自动修复此计算机如何解决...

在使用win7系统的时候&#xff0c;总是会遇到一些问题&#xff0c;比如就有用户反映说开机提示自动修复&#xff0c;导致无法正常进入操作系统&#xff0c;经过分析部分系统修复报错文件为&#xff1a;X:Windowssystem32driversspoon.sys&#xff0c;那么要怎么解决这样的问题呢…

计算机控制系统视频关守平,国家级精品课《计算机控制系统》课程建设研讨会顺利召开...

10月27日&#xff0c;国家级精品课《计算机控制系统》课程建设研讨会于科技楼4002会议室召开。我校校长刘建昌&#xff0c;东北大学教授关守平等6人&#xff0c;燕山大学教授孙孝峰等4人&#xff0c;分校控制工程学院院长王凤文、副院长段洪军&#xff0c;各省级精品课负责人、…

武汉理工大学计算机学院2018复试,武汉理工大学2018年自主招生复试揭秘

原标题&#xff1a;武汉理工大学2018年自主招生复试揭秘2018年武汉理工大学考试方式学马教育徐老师介绍&#xff0c;考核以笔试和学科专项测试或特殊专长考评的方式进行&#xff0c;具体要求如下&#xff1a;笔试科目为能力测试(满分300分&#xff0c;内容为数学与逻辑、中文阅…

nokia 计算机手机,NOKIA手机与电脑的数据线连接

将手机用数据线与电脑连接。系统显示找到新的硬件.下面是学习啦小编收集整理的NOKIA手机与电脑的数据线连接&#xff0c;希望对大家有帮助~~NOKIA手机与电脑的数据线连接方法/步骤将手机用数据线与电脑连接。系统显示找到新的硬件。安装相应的驱动程序。选择“从列表或指定位置…

七年级计算机教学质量分析,七年级数学期末教学质量分析报告

七年级数学期末教学质量分析报告提高教育教学质量是学校工作的重中之重,扎实进行课堂教学改革是提高质量的有力保证,是前提条件。下面是小编为大家整理的七年级数学期末教学质量分析报告&#xff0c;欢迎阅读。七年级数学期末教学质量分析报告一一、试卷的主要特点该试卷既注重…

做计算机工作的要专用手机吗,怎么在手机上完成工作?原来没有电脑手机还可以这样用...

用手机工作&#xff0c;放在功能机时代或者早期的智能手机时代&#xff0c;这个可能性很小。但是放在这个智能手机黑科技一年比一年厉害的时代来说&#xff0c;用手机来工作完全可能&#xff0c;至少一些简单的工作是可以在手机上实现的。因为手机可以借助一些自身的设计或者配…

与服务器传文件格式,客户端如何向服务器传文件格式

客户端如何向服务器传文件格式 内容精选换一换已获取该弹性云服务器的密钥文件&#xff0c;如未获取&#xff0c;请参见获取弹性云服务器的密钥文件。弹性云服务器已经绑定弹性IP地址。已配置安全组入方向的访问规则。如果您是在Windows操作系统上登录Linux&#xff0c;可以按照…

服务器搭建维护,服务器搭建维护方法

服务器搭建维护方法 内容精选换一换登录Windows操作系统的弹性云服务器时&#xff0c;需使用密码方式登录。因此&#xff0c;用户需先根据创建弹性云服务器时使用的密钥文件&#xff0c;获取该弹性云服务器初始安装时系统生成的管理员密码(Administrator帐户或Cloudbase-init设…

魔兽怀旧服服务器怎么修改,《魔兽世界怀旧服》转服功能怎么用 转服功能使用方法教程...

导读魔兽世界怀旧服不少玩家都处在高负载服务器中&#xff0c;这不仅对于服务器压力太大&#xff0c;而且对于玩家的游戏体验也不好&#xff0c;近期魔兽世界怀旧服免费角色转移功能开放&#xff0c;缓解玩家的压力和带来更好的游戏体验&#xff0c;下面小编就给大家带来魔兽..…

mac os touch命令_Mac系统忘记开机密码怎么办?

Hi~我是系统派~使用Windows系统的小伙伴都知道忘记开机密码可以通过PE工具解除实在不行还可以重装系统如果你手上的是Mac电脑同样也是不记得登录密码了有没有相似的解决方案呢&#xff1f;本教程教你两种Mac系统重置开机密码的方法万一哪天真的不记得密码了可以尝试解除千万别干…

(递归5)全排列

题目&#xff1a; 算法竞赛入门经典例7-2-1&#xff1a;输入整数n&#xff0c;按字典序从小到大的顺序输出前n个数的 所有排列 A&#xff1a;已确定的前缀数列 S&#xff1a;需要进行全排列的元素集合 伪代码&#xff1a; void print_permutation(序列A, 集合S) { if(…