分析:直接上吧,建议不要使用模板,否则没啥意义了。

代码如下:

===================================================================================================================================

#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(高精度快速幂)的更多相关文章

  1. hdu 5187(高精度快速幂)

    zhx's contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  2. hdu 2462(欧拉定理+高精度快速幂模)

    The Luckiest number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  3. 洛谷试炼场-简单数学问题-P1045 麦森数-高精度快速幂

    洛谷试炼场-简单数学问题 B--P1045 麦森数 Description 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果PP是个素数,2^P-1 不一定也是素数.到19 ...

  4. 读入 并查集 gcd/exgcd 高精度 快速幂

    ios_base::sync_with_stdio(); cin.tie(); ], nxt[MAXM << ], Head[MAXN], ed = ; inline void added ...

  5. HDU 4704 Sum (高精度+快速幂+费马小定理+二项式定理)

    Sum Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  6. Counting - SGU 117(快速幂)

    题目大意:求下面N个数里面有多少个数的M次方能整除K 代码如下: ======================================================== #include&l ...

  7. 高精度快速幂(Java版)

    import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { pu ...

  8. BZOJ_1005_ [HNOI2008]_明明的烦恼_(组合数学+purfer_sequence+高精度+分解因数+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1005 一棵树有n个点,给出没给节点的度,如果没有限制则为-1,求共有多少种可能的树. 分析 蒟 ...

  9. ZOJ2317-Nice Patterns Strike Back:矩阵快速幂,高精度

    Nice Patterns Strike Back Time Limit: 20000/10000MS (Java/Others)Memory Limit: 128000/64000KB (Java/ ...

随机推荐

  1. Eclipse快捷键,前几个很实用

    F3 :查看实现 F4(或control + T) :继承树 control + F6 :切换文件 control + F7 :切换视图 control + F8 :切换模板 control + O ...

  2. 一行代码实现headView弹簧拉伸效果

    前言 很多app的个人中心上部的headView都实现了弹簧拉伸的效果,即tableView的top并不随着下拉而滑动,而是紧紧的停在屏幕的最上方. 我们今天就分析一下这个效果的实现方式. 分析 关键 ...

  3. C#世界中的委托

    委托是C#最重要的特性之一,C#后面的所有特性基本都是建立在委托的基础上的. 1.C#委托是什么? 可以把C#的委托理解为函数的一个包装,它使得C#中的函数可以作为参数来被传递.如果你学过C++,可以 ...

  4. CSS3美化表单 移动端可用

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  5. 【Java多线程与并发库】4.传统线程同步通信技术

    我们先通过一道面试题来了解传统的线程同步通信. 题目:子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100次,如此循环50次,请写出程序. 我没有看答案, ...

  6. Jquery OR Js 实现图片预览

    Jquery方法一: <!DOCTYPE html> <html> <head>     <title></title>     <s ...

  7. 使用PHP脚本来写Daemon程序

    什么是Daemon进程   这又是一个有趣的概念,daemon在英语中是"精灵"的意思,就像我们经常在迪斯尼动画里见到的那些,有些会飞,有些不会,经常围着动画片的主人公转来转去,啰 ...

  8. Python【第一篇】基础介绍

    一.本节主要内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc文件 数据类型初识 数据运算 表达式if ...else语 ...

  9. 抓取天涯文章的蜘蛛代码,刚经过更新(因为天涯页面HTML代码变化)

    #_*_coding:utf-8-*- import urllib2 import traceback import codecs from BeautifulSoup import Beautifu ...

  10. hg vs git :这个世界除了svn还有别的

    最近想用版本控制软件来保存汉化文件,但又觉得SVN太麻烦,于是想到了最近较为流行的分布式版本控制工具.而Git和Mercurial(意思为水银的,于是经常缩写为Hg)自然是其中最为流行的工具.大名鼎鼎 ...