SGU - 112 - ab-ba (大数高精度)
2015-03-12 11:09
363 查看
112. ab-ba
time limit per test: 0.25 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
思路:大数高精度,比较简单的一道大数题,就是写起来比较麻烦,也好久没写大数的题了,写来感受感受。。
AC代码:
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; int a[505], b[505], ans[505]; void fun(int x, int a[]) { int t = x, i = 0; while(t) { a[i++] = t % 10; t /= 10; } } void multi(int a[], int x) { int up = 0; for(int i = 0; i < 500; i++) { int t = a[i] * x; a[i] = (t + up) % 10; up = (t + up) / 10; } } void sub(int a[], int b[]) { int down = 0; for(int i = 0; i < 500; i++) { if(a[i] - down >= b[i]) { a[i] = a[i] - down - b[i]; down = 0; } else { a[i] = a[i] - down - b[i] + 10; down = 1; } } for(int i = 500, flag = 0; i >= 0; i--) { if(a[i] != 0) { flag = 1; printf("%d", a[i]); } else if(a[i] == 0 && flag) printf("0"); } printf("\n"); } void subtraction(int a[], int b[]) { int flag = 0; for(int i = 500; i >= 0; i--) { //比较a的b次方和b的a次方的大小,用大的减去小的 if(a[i] > b[i]) { flag = 1; break; } else if(a[i] < b[i]) { flag = 2; break; } } if(flag == 1) { sub(a, b); } else if(flag == 2) { printf("-"); sub(b, a); } } int main() { int A, B; while(scanf("%d %d", &A, &B) != EOF) { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); fun(A, a), fun(B, b); //存入数组 for(int i = 1; i < B; i++) { //a的b次方 multi(a, A); } for(int i = 1; i < A; i++) { //b的a次方 multi(b, B); } subtraction(a, b); //a的b次方减去b的a次方 } return 0; }
相关文章推荐
- (高精度运算4.7.29)SGU 112 a^b - b^a(大数的幂运算)
- sgu 112 ab-ba
- 高精度 - SGU 112 a^b-b^a
- sgu 112 a^b - b^a java大数
- SGU 112 a^b-b^a(高精度)
- sgu-112(java 大数)
- 高精度——sgu112
- sgu111-112大数运算
- 高精度 - SGU 112 a^b-b^a
- a^b-b^a - SGU 112(高精度快速幂)
- SGU 200 Cracking RSA (高斯消元+大数高精度)
- (高精度运算4.7.21)UVA 10106 Product(大数乘法)
- (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)
- 高精度除法(大数除法)
- 高精度(大数)的四则运算与逻辑运算---c++ struct版
- SGU 407 Number of Paths in the Empire dp+java大数
- 高精度计算 大数减法
- SGU 111 Very simple problem(高精度+二分)
- 大数(高精度)
- 高精度大数相加