hdu 1002 A+B
来源:互联网 发布:拍照赚钱软件 编辑:程序博客网 时间:2024/05/16 15:06
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1002
复习一下大数
模板:
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <math.h> 5 #include <assert.h> 6 #include <ctype.h> 7 #include <map> 8 #include <string> 9 #include <set>10 #include <bitset>11 #include <utility>12 #include <algorithm>13 #include <vector>14 #include <stack>15 #include <queue>16 #include <iostream>17 #include <fstream>18 #include <list>19 using namespace std;20 21 const int MAXL = 1005;22 struct BigNum23 {24 int num[MAXL];25 int len;26 BigNum()27 {28 memset(num,0,sizeof(num));29 }30 };31 32 //高精度加法33 BigNum Add(BigNum &a, BigNum &b)34 {35 BigNum c;36 int i, len;37 len = (a.len > b.len) ? a.len : b.len;38 memset(c.num, 0, sizeof(c.num));39 for(i = 0; i < len; i++)40 {41 c.num[i] += (a.num[i]+b.num[i]);42 if(c.num[i] >= 10)43 {44 c.num[i+1]++;45 c.num[i] -= 10;46 }47 }48 if(c.num[len])49 len++;50 c.len = len;51 return c;52 }53 void print(BigNum &a) //输出大数54 {55 int i;56 for(i = a.len-1; i >= 0; i--)57 printf("%d", a.num[i]);58 printf("\n");59 }60 61 62 void Init(BigNum &a, char *s, int &tag) //将字符串转化为大数63 {64 int i = 0, j = strlen(s);65 if(s[0] == '-')66 {67 j--;68 i++;69 tag *= -1;70 }71 a.len = j;72 for(; s[i] != '\0'; i++, j--)73 a.num[j-1] = s[i]-'0';74 }75 76 int main(void)77 {78 //freopen("in.txt","r",stdin);79 int T;80 char s1[MAXL], s2[MAXL];81 scanf("%d",&T);82 for(int t=1;t<=T;t++)83 {84 BigNum a,b,c;85 memset(s1,0,sizeof(s1));86 memset(s2,0,sizeof(s2));87 scanf("%s %s",s1,s2);88 int tag=1;89 Init(a,s1,tag);90 Init(b,s2,tag);91 c=Add(a,b);92 if(t!=1)93 printf("\n");94 printf("Case %d:\n",t);95 printf("%s + %s = ",s1,s2);96 print(c);97 }98 return 0;99 }
普通:
1 #include<iostream> 2 #include<string.h> 3 #include<math.h> 4 #include<stdlib.h> 5 #include<stdio.h> 6 using namespace std; 7 const int M=1005; 8 void xsone(int a[],int b[],int lenz) 9 {10 for(int i=0;i<lenz;i++)11 a[i]=a[i]+b[i];12 int temp=0;13 for(int i=0;i<lenz+1;i++)14 {15 a[i]+=temp;16 temp=a[i]/10;17 a[i]%=10;18 }19 int i;20 for(i=lenz+1;i>=0;i--)21 if(a[i]!=0)22 break;23 for(;i>=0;i--)24 printf("%d",a[i]);25 printf("\n");26 }27 int main()28 {29 //freopen("in.txt","r",stdin);30 int n;31 scanf("%d",&n);32 for(int i=1;i<=n;i++)33 {34 char sa[M],sb[M];35 memset(sa,0,sizeof(sa));36 memset(sb,0,sizeof(sb));37 scanf("%s %s",sa,sb);38 int lena = strlen(sa);39 int lenb = strlen(sb);40 int lenz = lena>lenb ?lena :lenb;41 42 int a[M],b[M];43 memset(a,0,sizeof(a));44 memset(b,0,sizeof(b));45 int j;46 for(j=0;j<lena;j++)47 a[lena-1-j]=sa[j]-'0';48 for(j=0;j<lenb;j++)49 b[lenb-1-j]=sb[j]-'0';50 printf("Case %d:\n",i);51 printf("%s + %s = ",sa,sb);52 xsone(a,b,lenz);53 if(i!=n)54 printf("\n");55 }56 return 0;57 }
阅读全文
0 0
- HDU-1002-A+B
- hdu 1002 A+B
- HDU 1002 A+B(大数)
- HDU-1002 大数A+B
- hdu 1002 A+B problem ||
- hdu 1002 A+B Problem
- HDU 1002 A+B problemII
- [hdu-1002] (A+B)problemII
- HDU 1002 A+B Problem
- hdu 1002 A+B Problem ||
- HDU 1002 A+B problem
- HDU 1002 A+B problemII
- HDU--1002--大数A+B和大数A-B
- HDU 1002 A + B Problem II
- HDU 1002A + B Problem II
- HDU 1002 - A + B Problem II
- HDU 1002 A + B Problem II
- HDU 1002 A + B Problem II
- 大数模板(高精度)
- hdu 1047 Integer Inquiry
- 多线程互斥锁访问算法(下)------Lamport算法(面包店算法)
- HUSTOJ(转发)
- hdu 1063 Exponentiation
- hdu 1002 A+B
- c++设计模式之桥接模式
- Go 编译sqlite3 遇到的问题 + 加快go IDE编译速度
- hdu 1753 大明A+B
- 其他类型转化成DataTable
- TortoiseSVN文件夹及文件图标不显示解决方法(转发)
- zend studio 10破解/汉化(转发)
- hdu 2553 N皇后问题
- PowerDesigner