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

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. const int ten[4]={1,10,100,1000};
  5. const int maxl=1000;
  6. struct bignum
  7. {
  8. int d[maxl];
  9. bignum(string s)
  10. {
  11. int len=s.size();
  12. d[0]=(len-1)/4+1;
  13. int i,j,k;
  14. for(i=1;i<maxl;i++)d[i]=0;
  15. for(i=len-1;i>=0;i--)
  16. {
  17. j=(len-i-1)/4+1;
  18. k=(len-i-1)%4;
  19. d[j]+=ten[k]*(s[i]-'0');
  20. }
  21. while(d[0]>1&&d[d[0]]==0)--d[0];
  22. }
  23. bignum()
  24. {
  25. *this=bignum(string("0"));
  26. }
  27. string tostring()
  28. {
  29. string s("");
  30. int i,j,temp;
  31. for(i=3;i>=1;i--)if(d[d[0]]>=ten[i])break;
  32. temp=d[d[0]];
  33. for(j=i;j>=0;j--)
  34. {
  35. s=s+(char)(temp/ten[j]+'0');
  36. temp%=ten[j];
  37. }
  38. for(i=d[0]-1;i>0;i--)
  39. {
  40. temp=d[i];
  41. for(j=3;j>=0;--j)
  42. {
  43. s=s+(char)(temp/ten[j]+'0');
  44. temp%=ten[j];
  45. }
  46. }
  47. return s;
  48. }
  49. }zero("0"),d,temp,mid1[20];
  50. bool operator < (const bignum &a ,const bignum &b)
  51. {
  52. if(a.d[0]!=b.d[0])return a.d[0]<b.d[0];
  53. int i;
  54. for(i=a.d[0];i>0;i--)if(a.d[i]!=b.d[i])return a.d[i]<b.d[i];
  55. return 0;
  56. }
  57. bignum operator - (const bignum &a ,const bignum &b)
  58. {
  59. bignum c;
  60. c.d[0]=a.d[0];
  61. int i,x=0;
  62. for(i=1;i<=c.d[0];i++)
  63. {
  64. x=10000+a.d[i]-b.d[i]+x;
  65. c.d[i]=x%10000;
  66. x=x/10000-1;
  67. }
  68. while((c.d[0]>1)&&(c.d[c.d[0]]==0))--c.d[0];
  69. return c;
  70. }
  71. bignum operator *(const bignum &a,const bignum &b)
  72. {
  73. bignum c;
  74. c.d[0]=a.d[0]+b.d[0];
  75. int i,j,x;
  76. for(i=1;i<=a.d[0];i++)
  77. {
  78. x=0;
  79. for(j=1;j<=b.d[0];j++)
  80. {
  81. x=a.d[i]*b.d[j]+x+c.d[i+j-1];
  82. c.d[i+j-1]=x%10000;
  83. x/=10000;
  84. }
  85. c.d[i+b.d[0]]=x;
  86. }
  87. while((c.d[0]>1)&&(c.d[c.d[0]]==0))--c.d[0];
  88. return c;
  89. }
  90. string getstring(int a)
  91. {
  92. string ss;
  93. while(a!=0)
  94. {
  95. ss= char('0'+(a%10))+ss;
  96. a/=10;
  97. }
  98. return ss;
  99. }
  100. int main()
  101. {
  102.  
  103. int aa,bb;
  104. cin>>aa>>bb;
  105. if(aa==bb)
  106. {
  107. cout<<0<<endl;
  108. return 0;
  109. }
  110. string ta=getstring(aa),tb=getstring(bb);
  111. bignum a(ta); bignum b(tb);
  112. // cout<<a.tostring();
  113. // cout<<b.tostring()<<endl;
  114. bignum ans1("1"),ans2("1");
  115.  
  116. for(int i=0;i<bb;i++)
  117. {
  118. ans1=ans1*a;
  119. }
  120. // cout<<ans1.tostring()<<endl;
  121. for(int i=0;i<aa;i++)
  122. {
  123. ans2=ans2*b;
  124. }
  125. // cout<<ans2.tostring()<<endl;
  126. if(ans2<ans1)
  127. {
  128. bignum ans=ans1-ans2;
  129. cout<<ans.tostring()<<endl;
  130. }
  131. else
  132. {
  133. bignum ans=ans2-ans1;
  134. cout<<"-"<<ans.tostring()<<endl;
  135. }
  136. return 0;
  137. }

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. Spring框架 全注解annotation不使用配置文件(SpringConfiguration.java类代替) 补充 xml配置文件没有提示解决

    全注解不使用配置文件 首先还是倒包 在原有的jar包: 需Spring压缩包中的四个核心JAR包 beans .context.core 和expression 下载地址: https://pan.b ...

  2. ios xmpp demo

    为了方便程序调用,我们把XMPP的一些主要方法写在AppDelegate中 在AppDelegate.m下这几个方法为: [java] view plaincopy -(void)setupStrea ...

  3. C++系统学习之六:函数

    1.函数基础 典型的函数定义包括:返回类型.函数名.由0个或多个形参组成的列表以及函数体. 2.参数传递 形参初始化的机理和变量初始化一样. 有两种方式:引用传递和值传递 2.1 传值参数 当形参是非 ...

  4. MySQL 上移/下移/置顶

    在编写网站系统时,难免会用到上移.下移.置顶的功能,今天小编就介绍一下我的思路. 首先,需要一张数据表: CREATE TABLE `a` ( `id` ) NOT NULL AUTO_INCREME ...

  5. RN安卓原生模块

    https://facebook.github.io/react-native/docs/native-modules-android.html RN实际就是依附在原生平台上,把各种各样的RN组件展示 ...

  6. 前端 MV*模式

    https://github.com/livoras/blog/issues/11 MVC 调用关系如下: Controller(model) ,controller中执行业务逻辑,操作model V ...

  7. C++ 字符串分割,并把子字符串转换成int型整数

    主要涉及到string类的两个函数find和substr: find()函数的用法: 原型:size_t find ( const string& str, size_t pos = 0 ) ...

  8. windows10系统下安装keras框架以theano为后端并配置gpu加速

    在安装之前,请确保你的显卡是NVIDIA的,并且是以下型号,否则不能进行gpu加速,右键我的电脑--管理--设备管理器--显示适配器.另外如果你的电脑是windows7,安装教程也是一样的,不过根据k ...

  9. 【SaltStack】一些常用模块举例

    一.用户和用户组模块 说明:该sls文件用来在Minion端创建nginx用户和nginx用户组,当创建nginx用户时,对nginx用户组是否已存在做判断! (1)  /srv/salt/creat ...

  10. Oracle常用查询语句

    "ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA. USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息 ALL_*:有关用户可以访问的对象的信息,即用户自己 ...