SGU112 - a^b-b^a
2013-03-08 19:18
561 查看
[b]112. ab-ba[/b]
time limit per test: 0.5 sec.
memory limit per test: 4096 KB
You are given natural numbers a and b. Find ab-ba.
Input
Input contains numbers a and b (1≤a,b≤100).
Output
Write answer to output.
Sample Input
Sample Output
View Code
time limit per test: 0.5 sec.
memory limit per test: 4096 KB
You are given natural numbers a and b. Find ab-ba.
Input
Input contains numbers a and b (1≤a,b≤100).
Output
Write answer to output.
Sample Input
2 3
Sample Output
-1 题解:高精度乘法和高精度减法。水水的。。。不过第五个数据WA了,不知道为什么,是用函数memcmp去判断两个数组所代表的数的大小,莫名其妙的出错了,然后果断自己写了个判断,然后提交上去就AC了。。。
View Code
#include<stdio.h> #include<string.h> #define MAXSN 1500 long x[MAXSN],y[MAXSN],temp[MAXSN]; long a,b; int main(void) { long i,j,s,r,len1,len2,len; scanf("%ld%ld",&a,&b); memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); x[0]=1; for(i=1; i<=b; i++) { long c; c=0; for(j=0; j<MAXSN; j++) { s=x[j]*a+c; x[j]=s%10; c=s/10; } } y[0]=1; for(i=1; i<=a; i++) { long c; c=0; for(j=0; j<MAXSN; j++) { s=y[j]*b+c; y[j]=s%10; c=s/10; } } len1=MAXSN-1; while(x[len1]==0) len1--; len2=MAXSN-1; while(y[len2]==0) len2--; if(len1<len2) len=len2; else len=len1; if(len1!=len2) r=len1<len2?-1:1; else { for(i=len1; i>=0; i--) if(x[i]!=y[i]) { r=x[i]<y[i]?-1:1; break; } } if(r<0) { printf("-"); memcpy(temp,x,sizeof(x)); memcpy(x,y,sizeof(y)); memcpy(y,temp,sizeof(temp)); } for(i=0; i<=len; i++) { x[i]=x[i]-y[i]; x[i+1]=x[i+1]+(x[i]>=0?1:0)-1; x[i]=x[i]+(x[i]>=0?0:1)*10; } while(x[len]==0&&len>=1) len--; for(i=len; i>=0; i--) printf("%ld",x[i]); printf("\n"); return 0; }
相关文章推荐
- SGU112 水题 Easy
- SGU 112 a^b-b^a(高精度)
- sgu 112
- SGU 112 a^b - b^a 大数+二进制优化
- sgu 112 a^b - b^a java大数
- sgu111-112大数运算
- SGU 112 a^b-b^a
- 高精度 - SGU 112 a^b-b^a
- sgu 112 ab-ba
- a^b-b^a - SGU 112(高精度快速幂)
- SGU112
- SGU 112 a^b - b^a
- SGU - 112 - ab-ba (大数高精度)
- 高精度 - SGU 112 a^b-b^a
- 高精度——sgu112
- sgu-112(java 大数)
- (高精度运算4.7.29)SGU 112 a^b - b^a(大数的幂运算)
- SGU 112 a^b-b^a
- sgu 120
- 深入浅出C# 中文版 图文皆译 第三章 page112