SGU112
题意:求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的更多相关文章
- SGU Volume 1
SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...
- 今日SGU 5.2
SGU123 题意:求和 收获:无 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="< ...
随机推荐
- 制作新的train,test数据集
之前的数据集的train和test是直接按照网上下载的数据的前7000个作为训练集,后2212个作为测试集.看得出来,这个数据集是由开车录制视频转换来的图片数据,后面2000多个图片的场景和前面的场景 ...
- 真爱 vs. 种姓:新一代印度人的婚恋观
今日导读 “自由恋爱”是所有世界上所有有情人共同的心愿,而在印度,因为其根深蒂固的种姓制度,仍然有大批情侣只能听从父母的“包办婚姻”,被迫与心爱的人分离.但是最新的一项调查表明,印度的年轻一代开始出现 ...
- Linux 标准 I/O 库
为什么要设计标准 I/O 库? 直接使用 API 进行文件访问时,需要考虑许多细节问题,例如:read . write 时,缓冲区的大小该如何确定,才能使效率最优 read 和 write 等底层系统 ...
- java上传、下载、删除ftp文件
一共三个类,一个工具类Ftputil.,一个实体类Kmconfig.一个测试类Test 下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/669710 ...
- 关于windows server 2003 IE 不能访问 https问题
https://xx.wosign.com/FAQ/Windows2003_server_sha256_support_problem.html 补丁地址: https://xx.wosign.com ...
- UIScreen, UIWindow
模仿书上或网上的例子,每次最开始就是 在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: ...
- 请大神看看10.10Beta1的AppleRTC怎么破?原版会导致BIOS重置!
看起来 跟10.9一样 sudo perl -pi -e 's|\x75\x2e\x0f\xb6|\xeb\x2e\x0f\xb6|' /System/Library/Extensions/Apple ...
- 【线段树】uoj#228. 基础数据结构练习题
get到了标记永久化 sylvia 是一个热爱学习的女孩子,今天她想要学习数据结构技巧. 在看了一些博客学了一些姿势后,她想要找一些数据结构题来练练手.于是她的好朋友九条可怜酱给她出了一道题. 给出一 ...
- (转)iOS 最佳实践
本文转自http://www.jianshu.com/p/b0bf2368fb95 感谢作者和译者 iOS最佳实践 iOS最佳实践 译者注 本文翻译自 futurice 公司的 iOS Good Pr ...
- Spring核心技术(十一)——基于Java的容器配置(一)
基本概念: @Bean和@Configuration Spring中新的基于Java的配置的核心就是支持@Configuration注解的类以及@Bean注解的方法. @Bean注解用来表示一个方法会 ...