大数运算-待整理
来源:互联网 发布:大数据精准扶贫ppt 编辑:程序博客网 时间:2024/05/09 15:19
/*FileName:PAT-A1024.Palindromic NumberAuthor:3stoneDate:2017.2.13*/#include<cstdio>#include<cstring>#include<iostream>#include<string>#include<cmath>#include<algorithm>#define maxSize 1000#define caseSize 25//数据 组数#define ascii_0 48using namespace std;int getMax(int a, int b) { if (a > b) return a; else return b;}void reverseArray(int a[], int b[],int len) {//获取逆置数组 for (int i = 0; i < len; i++) b[len - i - 1] = a[i];}int judgePal(int a[],int alen) { //判断是否为回文数 int i = 0, j = alen - 1; while (i < j) { if (a[i] != a[j]) return 0; i++; j--; } return 1;}//大数乘法【一大一小,数组已逆置】/*void big_mul(int a[], int n,int & len) { //大数乘法【一大一小】要求输入的数组 已是倒序 int i, sum = 0, carry = 0; for (i = 0; i < len; i++) { sum = a[i] * n + carry;//部分和 a[i] = sum % 10; carry = sum / 10; } while (carry) {//处理最后的进位 a[i++] = carry % 10; carry /= 10; len++;//warning:位数增长 }}*///大数加法【数组已逆置】void big_add(int a[], int b[], int & len) {//大数加法 int carry = 0, sum = 0; for (int i = 0; i < len; i++) { sum = a[i] + b[i] + carry; a[i] = sum % 10;//结果 carry = sum / 10;//进位 } if (carry)//最高位进位 a[len++] = carry;}void myInput(int a[], int b[],int c[], int& alen,int& blen, int & clen) { //处理数据 string str; cin >> str; alen = str.size(); reverse(str.begin(), str.end()); for (int i = 0; i < alen; i++) {//转为数字 数组表示 a[i] = str[i] - ascii_0; c[i] = a[i]; } clen = alen; cin >> str; blen = str.size(); reverse(str.begin(), str.end()); for (int i = 0; i < blen; i++)//转为数字 数组表示 b[i] = str[i] - ascii_0;}void myPrint(int a[], int b[], int c[],int alen,int blen,int clen) { //倒序输出 for (int i = alen - 1; i >= 0; i--) cout << a[i]; cout << " + "; for (int i = blen - 1; i >= 0; i--) cout << b[i]; cout << " = "; for (int i = clen - 1; i >= 0; i--) cout << c[i]; cout << endl;}int main() { int len; int a[caseSize][maxSize], b[caseSize][maxSize], c[caseSize][maxSize]; int alen[caseSize], blen[caseSize], clen[caseSize], i, caseNum; memset(a, 0, sizeof(a));//初始化 memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); memset(alen, 0, sizeof(alen)); memset(blen, 0, sizeof(blen)); memset(clen, 0, sizeof(clen)); cin >> caseNum;//组数 for (int k = 0; k < caseNum; k++) { myInput(a[k], b[k], c[k], alen[k], blen[k], clen[k]);//处理数据 len = getMax(alen[k], blen[k]); big_add(a[k], b[k], len);//相加 } int k; for (k = 0; k < caseNum - 1; k++) { cout << "Case " << k + 1 << ":" << endl; myPrint(c[k], b[k], a[k], clen[k], blen[k], alen[k]);//输出 cout << endl; } cout << "Case " << k + 1 << ":" << endl; myPrint(c[k], b[k], a[k], clen[k], blen[k], alen[k]);//输出最后一行 return 0;}
0 0
- 大数运算-待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理......
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 待整理
- 我的科研生活2017-2-13
- 关于SimpleDateFormat安全的时间格式化线程安全问题
- 知识库--Taming Shared Mutablity(113)
- HTTP协议—— 简单认识TCP/IP协议
- 计算机视觉基础1——视差与深度信息
- 大数运算-待整理
- Andrew Ng 《Machine Learning》第四讲——神经网络(Neural Network )
- urllib库python2和python3具体区别
- Ubuntu安装eclipse
- Andrew Ng《Machine Learning》第五讲——神经网络模型训练(cost function &backpropagation)
- 整数划分
- 11. Container With Most Water
- Android开发之Fragment重叠问题:
- [硕.Love Python] RadixSort(基数排序)