NYOJ I : CTX学长的快速幂
来源:互联网 发布:淘宝 山寨手机 编辑:程序博客网 时间:2024/06/04 11:55
I : CTX学长的快速幂
题目描述
什么?听说你会快速幂?这么厉害的吗,那我就出一道快速幂的题吧!
题意很简单,给你n,m的值,我想知道n的m次方是多少,但是这个答案太大了,所以你只需要输出答案最后面的十位数字即可。
输入
T组输入,接下来的T行(T<300),每一行输入n,m(0<n<=100 ,0<=m<=1000000000)
输出
输出T行,每一行输出n^m的后十位数字(不够10位用零补)。
样例输入
复制
32 103 31 1000000000
样例输出
复制
000000102400000000270000000001
提示
无
额。。。。这道题我当时是一直在用之前大佬讲的模板做的,改了好几次就是过不了,也没有别的思路,就放弃了,所以我就先放题解,自己的代码就晚点再放好了
题解:
//并不是所有问题都是盲目套模板的。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define LL long long#define mod 10000000000using namespace std;//举个栗子:(a)6541341165*(b)9846541356//将b拆开拆成,9,8,4,6,5,4,1,2,5,6//然后把a*b变成:a*6+a*10%mod*5+a*10%mod*10%mod*2+a*10%mod*10%mod*10%mod*1+.....以此类推//这样就能解决a*b会爆LL的问题了。LL chengfa(LL a,LL b){ LL sum=0; while(b) { sum=(sum+a*(b%10))%mod; a=a*10%mod; b=b/10; } return sum;}//LL chengfa(LL a,LL b)//如果mod为1e18的话就必须这样写了,用二进制解决这个问题//{// LL sum=0;// while(b)// {// if(b%2==1) sum=(sum+a)%mod;// a=(a+a)%mod;// b=b/2;// }// return sum;//}//看懂后你会发现这个代码和快速幂的代码基本上一样。*和+的区别。LL pow(LL a,LL b){ LL sum=1; while(b) { if(b%2==1) sum=chengfa(sum,a); a=chengfa(a,a);//这里的a是一个小于mod的数字,a可能是一个十位数的数字//两个十位数相乘是二十位的数字,那么就超过了LL//所以要想办法使得a*a不超过LL,具体看chengfa()函数。 b=b/2; } return sum;}int main(){ int n; scanf("%d",&n); while(n--) { int a,b; scanf("%d%d",&a,&b); printf("%010lld\n",pow((LL)a,(LL)b)); } return 0;}
我的代码(其实我是看了题解再做的解析就直接看题解上的吧!!):
#include<stdio.h>#include<string.h>#include<algorithm>#define LL long long#define mod 10000000000using namespace std;LL hhh(LL a,LL b){ LL sum=0; while(b) { sum=(sum+a*(b%10))%mod; a=a*10%mod; b=b/10; } return sum;}LL pow(LL a,LL b){ LL sum=1; while(b) { if(b%2==1) sum=hhh(sum,a); a=hhh(a,a); b=b/2; } return sum;}int main(){ int t; scanf("%d",&t); while(t--) { int a,b; scanf("%d%d",&a,&b); printf("%010lld\n",pow((LL)a,(LL)b)); } return 0;}
阅读全文
0 0
- NYOJ I : CTX学长的快速幂
- CTX学长的快速幂
- CTX学长的快速幂(快速幂运用)
- NYOJ B : CTX学长的01串
- NYOJ J : CTX学长的找位置游戏
- CTX学长的01串
- CTX学长的找位置游戏
- CTX学长的找位置游戏(错排)
- NYOJ 1218 zkc学长的福利
- NYOJ 1218 zkc学长的福利
- NYOJ zkc学长的福利(贪心+高精度运算)
- ${ctx} 的那些事
- Netty中ctx.writeAndFlush与ctx.channel().writeAndFlush的区别
- 毕业学长的建议
- 学长出的题。。
- 学长的疑惑???
- 学长的训诫C++
- zkc学长的福利
- android常用封装 --- BaseFragment
- Tensorflow中Device实例的生成和管理
- extern的学习
- Scala 基础
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- NYOJ I : CTX学长的快速幂
- arm_MMU
- 《推荐系统》基于用户和Item的协同过滤算法的分析与实现(Python)
- 1124. Raffle for Weibo Followers (20)
- android.util.Log 日志级别
- 通过JAVA程序写一个简易的记事本
- redis的安装小记
- Yarn on Docker集群方案
- 第3章、主机规划与磁盘分区