题意:求a^b-b^a次,100以内。大数的-和*的模拟,用的模板,注意该模板中间和结果都不能出现负数。
#include#include 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 =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] 0;i--)if(a.d[i]!=b.d[i])return a.d[i] 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<