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/ ...
随机推荐
- html-----005
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Window 下安装Redis
下载地址:https://github.com/dmajkic/redis/downloads. 下载到的Redis支持32bit和64bit.根据自己实际情况选择,将64bit的内容cp到自定义盘符 ...
- JavaScript学习心得(二)
一选择DOCTYPE DOCTYPE是一种标准通用标记语言的文档类型声明,目的是告诉标准通用标记语言解析器使用什么样的文档类型定义(DTD)来解析文档. 网页从DOCTYPE开始,即<!DOCT ...
- resolvconf: Error: /etc/resolv.conf isn't a symlink, not doing anything.
一.问题出现的原因 resolv.conf默认是个软链接,resolvconf默认会检查resolv.conf不是软链接就报错 默认的情况是这样的: #ls -l /etc/resolv.conflr ...
- 抓取天涯文章的蜘蛛代码,刚经过更新(因为天涯页面HTML代码变化)
#_*_coding:utf-8-*- import urllib2 import traceback import codecs from BeautifulSoup import Beautifu ...
- 内存管理tcmalloc
tcmalloc https://code.google.com/p/gperftools/
- Java cookie的使用
1.cookie是什么? cookie是web应用当中非常常用的一种技术,用于储存某些特定的用户信息. 2.cookie的作用? 在用户登陆时将用户的信息存放在cookie中,用户在一定的时间中再次登 ...
- mysql主从配置(清晰的思路)
mysql主从配置.鄙人是在如下环境测试的: 主数据库所在的操作系统:win7 主数据库的版本:5.0 主数据库的ip地址:192.168.1.111 从数据库所在的操作系统:linux 从数据的版本 ...
- 【zz】C++中struct与class的区别
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.html C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据 ...
- android开发之使用shape来画线,有一些注意点
注意:Android3.0以上系统开始支持硬件加速特性hardwareAccelerated,默认是启用的.当你的某个activity用到了“虚线”效果的时候,必须要设置AndroidManifest ...