(updating)HDUOJ解题目录(1000-1050)

版权声明:本人大三在读,有错误烦请指正,共同进步- ( ゜- ゜)つロ 乾杯~点赞请按右上角,转载请标明出处: https://blog.csdn.net/hzyhfxt/article/details/83898048

不出意外都用c/c++~~(Java,python稀有掉落)

1000

大整数加法(Java实现)

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String args[]){
       Scanner cin = new Scanner(System.in);
       BigInteger a, b;
       while (cin.hasNext()) //以文件EOF结束
       {
           a = cin.nextBigInteger();
           b = cin.nextBigInteger();
           System.out.println(a.add(b)); //大整数加法
       }
    }
}

1001

要换两次行...

#include <stdio.h>
int main()
{
    long long n;
    while(scanf("%lld",&n) != EOF)
    {
        printf("%lld\n\n",(1 + n) * n / 2); 
    }
    return 0;
}

1002

大数加法(c++实现),注意一下换行格式~

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <map>
#include <list>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <iostream>
#define go(i,a,b) for(int i=a;i<=b;i++)
#define og(i,a,b) for(int i=a;i>=b;i--)
#define mem(a) memset(a,0,sizeof(a))
#define cs cout<<"-----"<<endl;
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn = 1e6 + 5;
const double pi = atan(1.)*4;
typedef long long ll;

char a[1000],b[1000],ans[1005];
void add(char* a,char* b,char* c)//大数a(1000位之内)+ 大数b(1000位之内)= 存到字符串数组c中
{
    int i,j,k,max,min,temp;
    char *s,*pmax,*pmin;
    max=strlen(a);
    min=strlen(b);
    if (max<min)
    {
        temp=max;
        max=min;
        min=temp;
        pmax=b;
        pmin=a;
    }
    else
    {
        pmax=a;
        pmin=b;
    }
    s=(char*)malloc(sizeof(char)*(max+1));
    s[0]='0';
    for (i=min-1,j=max-1,k=max;i>=0;i--,j--,k--)
        s[k]=pmin[i]-'0'+pmax[j];
    for (;j>=0;j--,k--)
        s[k]=pmax[j];
    for (i=max;i>=0;i--)
        if (s[i]>'9')
        {
            s[i]-=10;
            s[i-1]++;
        }
    if (s[0]=='0')
    {
        for (i=0;i<=max;i++)
            c[i-1]=s[i];
        c[i-1]='\0';
    }
    else
    {
        for (i=0;i<=max;i++)
            c[i]=s[i];
        c[i]='\0';
    }
    free(s);
}
int main()
{
    int t;
    cin>>t;
    go(i,1,t)
    {
        if(i!=1)    cout<<endl;
        cin>>a>>b;
        add(a,b,ans);
        printf("Case %d:\n",i);
        cout<<a<<" + "<<b<<" = ";
        cout<<ans<<endl;
    }
   
    return 0;
    
}

猜你喜欢

转载自blog.csdn.net/hzyhfxt/article/details/83898048