题意:求a^b-b^a次,100以内。大数的-和*的模拟,用的模板,注意该模板中间和结果都不能出现负数。

#include<iostream>
#include<string>
using namespace std;
const int ten[4]={1,10,100,1000};
const int maxl=1000;
struct bignum
{
int d[maxl];
bignum(string s)
{
int len=s.size();
d[0]=(len-1)/4+1;
int i,j,k;
for(i=1;i<maxl;i++)d[i]=0;
for(i=len-1;i>=0;i--)
{
j=(len-i-1)/4+1;
k=(len-i-1)%4;
d[j]+=ten[k]*(s[i]-'0');
}
while(d[0]>1&&d[d[0]]==0)--d[0];
}
bignum()
{
*this=bignum(string("0"));
}
string tostring()
{
string s("");
int i,j,temp;
for(i=3;i>=1;i--)if(d[d[0]]>=ten[i])break;
temp=d[d[0]];
for(j=i;j>=0;j--)
{
s=s+(char)(temp/ten[j]+'0');
temp%=ten[j];
}
for(i=d[0]-1;i>0;i--)
{
temp=d[i];
for(j=3;j>=0;--j)
{
s=s+(char)(temp/ten[j]+'0');
temp%=ten[j];
}
}
return s;
}
}zero("0"),d,temp,mid1[20];
bool operator < (const bignum &a ,const bignum &b)
{
if(a.d[0]!=b.d[0])return a.d[0]<b.d[0];
int i;
for(i=a.d[0];i>0;i--)if(a.d[i]!=b.d[i])return a.d[i]<b.d[i];
return 0;
}
bignum operator - (const bignum &a ,const bignum &b)
{
bignum c;
c.d[0]=a.d[0];
int i,x=0;
for(i=1;i<=c.d[0];i++)
{
x=10000+a.d[i]-b.d[i]+x;
c.d[i]=x%10000;
x=x/10000-1;
}
while((c.d[0]>1)&&(c.d[c.d[0]]==0))--c.d[0];
return c;
}
bignum operator *(const bignum &a,const bignum &b)
{
bignum c;
c.d[0]=a.d[0]+b.d[0];
int i,j,x;
for(i=1;i<=a.d[0];i++)
{
x=0;
for(j=1;j<=b.d[0];j++)
{
x=a.d[i]*b.d[j]+x+c.d[i+j-1];
c.d[i+j-1]=x%10000;
x/=10000;
}
c.d[i+b.d[0]]=x;
}
while((c.d[0]>1)&&(c.d[c.d[0]]==0))--c.d[0];
return c;
}
string getstring(int a)
{
string ss;
while(a!=0)
{
ss= char('0'+(a%10))+ss;
a/=10;
}
return ss;
}
int main()
{ int aa,bb;
cin>>aa>>bb;
if(aa==bb)
{
cout<<0<<endl;
return 0;
}
string ta=getstring(aa),tb=getstring(bb);
bignum a(ta); bignum b(tb);
// cout<<a.tostring();
// cout<<b.tostring()<<endl;
bignum ans1("1"),ans2("1"); for(int i=0;i<bb;i++)
{
ans1=ans1*a;
}
// cout<<ans1.tostring()<<endl;
for(int i=0;i<aa;i++)
{
ans2=ans2*b;
}
// cout<<ans2.tostring()<<endl;
if(ans2<ans1)
{
bignum ans=ans1-ans2;
cout<<ans.tostring()<<endl;
}
else
{
bignum ans=ans2-ans1;
cout<<"-"<<ans.tostring()<<endl;
}
return 0;
}

SGU112的更多相关文章

  1. SGU Volume 1

    SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...

  2. 今日SGU 5.2

    SGU123 题意:求和 收获:无 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="< ...

随机推荐

  1. Jascript原型链以及Object和Function之间的关系

    先看一个简单的function变量 function fun1(name) { this.name = name; } console.log("fun1", fun1) 从结果可 ...

  2. 原 荐 使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控

    原 荐 使用Spring Boot Actuator.Jolokia和[可视化]Grafana实现准实时监控.   监控系统:          日志- 基础处理 - 表格 - 可视化一体化解决方案. ...

  3. 学c++有感

    第一次学习这么课程的时候,感觉课堂和教材的内容基本上都能接受和理解,但真正实际动手编写程序又觉得一片空白无从下手,可谓是“欲起平之恨无力.”一开始编写程序时,总是出现错误,从而产生了恐惧感,认为自己不 ...

  4. 漫谈使用Kafka作为MQ中间件

    哪些场景适合使用Kafka线上系统会实时产生数以万计的日志信息,服务器运行状态,用户行为记录,业务消息 等信息,这些信息需要用于多个不同的目的,比如审计.安全.数据挖掘等,因此需要以分类的方式将这些信 ...

  5. 【树形背包】bzoj4033: [HAOI2015]树上染色

    仔细思考后会发现和51nod1677 treecnt有异曲同工之妙 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 ...

  6. 【DB_MySQL】MySQL重要知识点

    MySQL中的select语句 各子句的执行顺序 SELECT语句的处理过程 1. FROM 组装数据来源 2. WHERE筛选元组 3. GROUP BY 将满足条件的元组进行分组 4. HAVIN ...

  7. HTML 文件类表单元素如何限制上传类型,Accept属性设置

    需求描述:简单的控制file的选择类型 解决方法:使用HTML  input file 的accept属性控制 实例: <form action="demo_form.asp" ...

  8. python爬虫基础06-常见加密算法

    Python与常见加密方式 前言 数据加密与解密通常是为了保证数据在传输过程中的安全性,自古以来就一直存在,古代主要应用在战争领域,战争中会有很多情报信息要传递,这些重要的信息都会经过加密,在发送到对 ...

  9. set的应用:UVa10815-Andy's First Dictionary

    Andy's First Dictionary Andy, 8, has a dream - he wants to produce his very own dictionary. This is ...

  10. 00051_static关键字

    1.static概念 当在定义类的时候,类中都会有相应的属性和方法.而属性和方法都是通过创建本类对象调用的.当在调用对象的某个方法时,这个方法没有访问到对象的特有数据时,方法创建这个对象有些多余.可是 ...