a^b-b^a - SGU 112(高精度快速幂)
分析:直接上吧,建议不要使用模板,否则没啥意义了。
代码如下:
===================================================================================================================================
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<math.h>
using namespace std; const int MAXN = ; struct BigNum
{
int size, op;///长度, op=1表示非负数,-1表示负数
int num[MAXN];///数,下标从0开始 BigNum(){
op = size = ;
memset(num, false, sizeof(num));
}
void GetText(int n)
{
size = log10(n)+; for(int i=; i<size; i++)
{
num[i] = n % ;
n /= ;
}
}
void CarryBit()
{///进位
for(int i=; i<size; i++)
{
if(i+==size && num[i] >= )
{
num[i+] = ;
size += ;
} num[i+] += num[i] / ;
num[i] %= ;
}
}
void BorrowBit()
{///借位
for(int i=; i<size; i++)
{
if(num[i] < )
{
num[i+] -= ;
num[i] += ;
}
} while(size > && !num[size-])
size --;
}
bool operator < (const BigNum &a)const
{///非负数比较
if(size > a.size)return false;
if(size < a.size)return true; for(int i=; i<size; i++)
{
if(num[i] > a.num[i])return false;
if(num[i] < a.num[i])return true;
} return false;
}
BigNum operator * (const BigNum &a)const
{
BigNum result; result.size = size + a.size - ; for(int i=; i<size; i++)
for(int j=; j<a.size; j++)
{
result.num[i+j] += num[i] * a.num[j];
}
result.CarryBit(); return result;
}
friend BigNum operator - (const BigNum &_a, const BigNum &_b)
{
BigNum result, a=_a, b=_b; if(a < b)
{
result.op = -;
swap(a, b);
}
result.size = a.size; for(int i=; i<a.size; i++)
result.num[i] = a.num[i] - b.num[i];
result.BorrowBit(); return result;
}
friend BigNum operator ^(const BigNum &_a, const int &_m)
{
BigNum result, a=_a;
result.num[] = ;
int m = _m;
while(m)
{
if(m & )
result = result * a;
a = a * a; m >>= ;
} return result;
}
void Out()
{
if(op == -)printf("-");
for(int i=size-; i>=; i--)
printf("%d", num[i]);
printf("\n");
}
}; int main()
{
int a, b;
BigNum m, n; scanf("%d%d", &a, &b); m.GetText(a);
n.GetText(b); m = m ^ b;
n = n ^ a; BigNum ans = m - n; ans.Out(); return ;
}
a^b-b^a - SGU 112(高精度快速幂)的更多相关文章
- hdu 5187(高精度快速幂)
zhx's contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- hdu 2462(欧拉定理+高精度快速幂模)
The Luckiest number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 洛谷试炼场-简单数学问题-P1045 麦森数-高精度快速幂
洛谷试炼场-简单数学问题 B--P1045 麦森数 Description 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果PP是个素数,2^P-1 不一定也是素数.到19 ...
- 读入 并查集 gcd/exgcd 高精度 快速幂
ios_base::sync_with_stdio(); cin.tie(); ], nxt[MAXM << ], Head[MAXN], ed = ; inline void added ...
- HDU 4704 Sum (高精度+快速幂+费马小定理+二项式定理)
Sum Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%I64d & %I64u Submit Status ...
- Counting - SGU 117(快速幂)
题目大意:求下面N个数里面有多少个数的M次方能整除K 代码如下: ======================================================== #include&l ...
- 高精度快速幂(Java版)
import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { pu ...
- BZOJ_1005_ [HNOI2008]_明明的烦恼_(组合数学+purfer_sequence+高精度+分解因数+快速幂)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1005 一棵树有n个点,给出没给节点的度,如果没有限制则为-1,求共有多少种可能的树. 分析 蒟 ...
- ZOJ2317-Nice Patterns Strike Back:矩阵快速幂,高精度
Nice Patterns Strike Back Time Limit: 20000/10000MS (Java/Others)Memory Limit: 128000/64000KB (Java/ ...
随机推荐
- Android增加监听的三种实现方式
在Android中,为一个按钮增加监听的方式有五种 1.匿名内部类 @Override protected void onCreate(Bundle savedInstanceState) { sup ...
- easyui中datagrid标题居中内容居左实现方式
easyui中的datagrid使用起来,确实还是挺轻巧方便,但是其中也有不少的问题,尤其遇到客户的一些特殊的需求时往往实现得不是很好.这个时候就需要我们自己动手来修改easyui的源码了.easyu ...
- 初尝 MVC4
文章内容参考 http://www.cnblogs.com/leoo2sk/archive/2008/10/27/1320285.html 开发环境 VS2010 ,VS2010 开发 MVC4 需下 ...
- Windows phone 之XML序列化与反序列化
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
- postman本地或远程访问不了
问题postman: 问题描述: 1.手动测试过不去http://121.199.54.31:8081/suppliers/Split 2.localhost:8080/microshop-settl ...
- PreResultListener使用
PreResultListener是一个监听器接口,可以在Action处理完之后,系统转入实际视图前被回调. Struts2应用可以给Action.拦截器添加PreResultListener监听器, ...
- phpcms v9使用GET调用指定id文章内容、页面数据方法
不知道大家有没有相同的体会?在使用Phpcms V9建站调用数据的时候,基础的数据用默认的模板的调用语句就好了,但复杂不常见的数据怎么调用呢?我们技术可能会研究半天,怀着探索的精神不断尝试.孜孜不倦. ...
- 关于mysql授权账号权限时的空密码问题
-root ~]$ mysql -uroot -p Enter password:ERROR 1045 (28000): Access denied for user ‘root’@'localhos ...
- git实现版本回退
1. 首先查看自己的版本: ***:~/piaoshifu_object/epiao.piaoshifu.cn$ git log commit c8d5c67861d2d0e21856cc2b4f60 ...
- JdbcTemplate 操作Oracle Blob
1:增加操作 public int addTest(TestVo tv) { byte bz[] = tv.getBz().getBytes(); LobHandler lobHandler = ne ...