ACM高精度运算

C
A+B
该题为高精度运算以到模板题,运用模板,即利用字符数组存储每一位数,闯将另一数组储存每一位数,然后进行加运算。

#include
#include
#define maxn 1010
int an1[maxn];
int an2[maxn];
char s1[maxn+10];
char s2[maxn+10];
int main()
{
    int t;
    scanf("%d",&t);
    int time =1;
    int o=t;
  while(t--)
  {
    scanf("%s",s1);
    scanf("%s",s2);
    int i,j;
    memset(an1,0,sizeof(an1));
    memset(an2,0,sizeof(an2));
    int n1=strlen(s1);
    for(j=0,i=n1-1;i>=0;i--)
        an1[j++]=s1[i]-'0';
    int n2=strlen(s2);
    for(j=0,i=n2-1;i>=0;i--)
        an2[j++]=s2[i]-'0';
    for(i=0;i<maxn;i++)
    {
        an1[i]+=an2[i];//逐位相加
        if(an1[i]>=10)//看是否要进位
        {
            an1[i]-=10;
            an1[i+1]++;//进位
        }
    }
    printf("Case %d:\n",time);
    time++;
    printf("%s + %s = ",s1,s2);
    for(i=maxn;(i>=0)&&(an1[i]==0);i--);
    if(i>=0)
        for(;i>=0;i--)
            printf("%d",an1[i]);
    else
        printf("0");
    printf("\n");
    if(time!=o+1)
        printf("\n");
  }
    return 0;
}

F
大整数减法
该题同样是模板题,利用和上题同一思想进行减运算,需要注意的是进行借位

#include
#include
#include
#include
using namespace std;
/**#define PI acos(-1.0)
#define EPS 1e-8
#define MOD 1e9+7
#define LL long long*/
#define maxn 250
int c[maxn];
int num;
int main()
{
    char A[maxn];
    char B[maxn];
    scanf("%s%s",&A,&B);
    if(strlen(A)<strlen(B)||(strlen(A)==strlen(B)&&strcmp(A,B)<0))
    {
        swap(A,B);//交换
        printf("-");
    }
     int a[maxn],b[maxn];
    int lena=strlen(A);//表示a的长度
    int lenb=strlen(B);//表示b的长度
    for(int i=0;i<lena;++i)
        a[i]=A[lena-i-1]-'0';
    for(int i=0;i<lenb;++i)
        b[i]=B[lenb-i-1]-'0';
    num=0;//初始c的位数
    for(int i=0, g=0;i<max(lena,lenb);++i)//g借位是用
    {
        int temp=a[i]-g;
        if(i<lenb)
            temp-=b[i];
        if(temp>=0)
            g=0;
        else
        {
            g=1;
            temp+=10;
        }
        c[num++]=temp;
    }
    num=num-1;
    while(!c[num]&&(num>=1))
        --num;
    for(int i=num;i>=0;--i)
        printf("%d",c[i]);
    return 0;
}

你可能感兴趣的:(C++)