头像

Sweet.L




离线:2天前


最近来访(1)
用户头像
edgdcgxgbx

活动打卡代码 AcWing 796. 子矩阵的和

Sweet.L
3天前
#include<stdio.h>
#define N 1010
int a[N][N],s[N][N];
int main()
{
    int n,m,p,i,j,x1,x2,y1,y2;
    scanf("%d%d%d",&n,&m,&p);
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
      scanf("%d",&a[i][j]);
    for(i=1;i<=n;i++)
     for(j=1;j<=m;j++)
      s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j];
    while(p--)
    {
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        printf("%d\n",s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1]);
    }
    return 0;
}


活动打卡代码 AcWing 795. 前缀和

Sweet.L
4天前
#include<stdio.h>
#define N 100010
int a[N],s[N];
int main()
{
    int i,l,r,n,m;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
     scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
     s[i]=s[i-1]+a[i];
    while(m--)
    {
        scanf("%d%d",&l,&r);
        printf("%d\n",s[r]-s[l-1]);
    }
    return 0;
}


活动打卡代码 AcWing 794. 高精度除法

Sweet.L
6天前
#include<stdio.h>
#include<string.h>
#define N 100010
int A[N],C[N];
int main()
{
    int i,j,la,r,b;//r为余数,1<=b<=10000,b为低精度和除数
    char a[N];
    scanf("%s",a);
    scanf("%d",&b);
    la=strlen(a);
    for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
    for(i=la-1;i>=0;i--)//注意这里i从la-1开始,与加减乘不一样
    {
        r=r*10+A[i];
        C[i]=r/b;
        r%=b;
    }
    while(la-1>0&&C[la-1]==0) la--;//去除前导0,如商为099
    for(i=la-1;i>=0;i--)
     printf("%d",C[i]);
     printf("\n");
     printf("%d",r);
     return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



Sweet.L
6天前

题目描述

高精度乘法

样例

123154521
12

C 代码

#include<stdio.h>
#include<string.h>
#define N 100010
int A[N],C[N];
int main()
{
    int i,j,la,t,B;
    char a[N];
    scanf("%s",a);
    scanf("%d",&B);
    la=strlen(a);
    for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
    for(i=0;i<la||t;i++)
    {
        if(i<la) t+=A[i]*B;
        C[i]=t%10;
        t/=10;
    }
    while(i-1>0&&C[i-1]==0) i--;
    for(j=i-1;j>=0;j--) printf("%d",C[j]);
    return 0;
}


活动打卡代码 AcWing 793. 高精度乘法

Sweet.L
6天前
#include<stdio.h>
#include<string.h>
#define N 100010
int A[N],C[N];
int main()
{
    int i,j,la,t,B;
    char a[N];
    scanf("%s",a);
    scanf("%d",&B);
    la=strlen(a);
    for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
    for(i=0;i<la||t;i++)
    {
        if(i<la) t+=A[i]*B;
        C[i]=t%10;
        t/=10;
    }
    while(i-1>0&&C[i-1]==0) i--;
    for(j=i-1;j>=0;j--) printf("%d",C[j]);
    return 0;
}
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~



Sweet.L
9天前

题目描述

高精度减法

样例

32
12

C 代码

#include<stdio.h>//C=A-B
#include<string.h>
#define N 100010
int A[N],B[N],C[N];
int main()
{
    int la,lb,i,j,t;
    char a[N],b[N];
    scanf("%s",&a);
    getchar();
    scanf("%s",&b);
    la=strlen(a);
    lb=strlen(b);
    for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
    for(i=lb-1,j=0;i>=0;i--,j++) B[j]=b[i]-'0';
    while()
    if(strcmp(a,b)==0)//A=B时
     printf("0");
    else if(la>lb||(la==lb&&strcmp(a,b)>0))//A>B时
    {
        for(i=0;i<la;i++)
        {
            t=A[i]-t;
            if(i<lb) t-=B[i];
            C[i]=(t+10)%10;
            if(t<0) t=1;
            else t=0;
        }
        while(i-1>0&&C[i-1]==0)
        i--;
        for(j=i-1;j>=0;j--)
         printf("%d",C[j]);
    }
    else//A<B时
    {
        for(i=0;i<lb;i++)
        {
            t=B[i]-t;
            if(i<la) t-=A[i];
            C[i]=(t+10)%10;
            if(t<0) t=1;
            else t=0;
        }
        while(i-1>0&&C[i-1]==0)
        i--;
        printf("-");
        for(j=i-1;j>=0;j--)
         printf("%d",C[j]);
    }
    return 0;
}


活动打卡代码 AcWing 792. 高精度减法

Sweet.L
9天前
#include<stdio.h>//C=A-B
#include<string.h>
#define N 100010
int A[N],B[N],C[N];
int main()
{
    int la,lb,i,j,t;
    char a[N],b[N];
    scanf("%s",&a);
    getchar();
    scanf("%s",&b);
    la=strlen(a);
    lb=strlen(b);
    for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
    for(i=lb-1,j=0;i>=0;i--,j++) B[j]=b[i]-'0';
    while()
    if(strcmp(a,b)==0)//A=B时
     printf("0");
    else if(la>lb||(la==lb&&strcmp(a,b)>0))//A>B时
    {
        for(i=0;i<la;i++)
        {
            t=A[i]-t;
            if(i<lb) t-=B[i];
            C[i]=(t+10)%10;
            if(t<0) t=1;
            else t=0;
        }
        while(i-1>0&&C[i-1]==0)
        i--;
        for(j=i-1;j>=0;j--)
         printf("%d",C[j]);
    }
    else//A<B时
    {
        for(i=0;i<lb;i++)
        {
            t=B[i]-t;
            if(i<la) t-=A[i];
            C[i]=(t+10)%10;
            if(t<0) t=1;
            else t=0;
        }
        while(i-1>0&&C[i-1]==0)
        i--;
        printf("-");
        for(j=i-1;j>=0;j--)
         printf("%d",C[j]);
    }
    return 0;
}



活动打卡代码 AcWing 791. 高精度加法

Sweet.L
9天前
#include<stdio.h>
#include<string.h>
#define N 100010
int A[N],B[N],C[N];
int main()
{
    int la,lb,i,j,t;
    char a[N],b[N];
    scanf("%s",&a);
    getchar();
    scanf("%s",&b);
    la=strlen(a);
    lb=strlen(b);
    for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
    for(i=lb-1,j=0;i>=0;i--,j++) B[j]=b[i]-'0';

    t=0;
    for(i=0;i<la||i<lb;i++)
    {
        if(i<la) t+=A[i];
        if(i<lb) t+=B[i];
        C[i]=t%10;
        t/=10;
    }
    if(t)
    {
        C[i]=t;
        for(j=i;j>=0;j--)
         printf("%d",C[j]);
    }
    else
     for(j=i-1;j>=0;j--)
      printf("%d",C[j]);
    return 0;
}



Sweet.L
9天前

题目描述

高精度加法

样例

66
65

C 代码

#include<stdio.h>
#include<string.h>
#define N 100010
int A[N],B[N],C[N];
int main()
{
    int la,lb,i,j;
    char a[N],b[N];
    scanf("%s",&a);
    getchar();//用来吸收回车,加不加都行
    scanf("%s",&b);
    la=strlen(a);
    lb=strlen(b);
    for(i=la-1,j=0;i>=0;i--,j++) A[j]=a[i]-'0';
    for(i=lb-1,j=0;i>=0;i--,j++) B[j]=b[i]-'0';

    int t=0;
    for(i=0;i<la || i<lb;i++)
    {
      if(i<la) t+=A[i];
      if(i<lb) t+=B[i];
      C[i]=t%10;
      t/=10;
    }//出循环时i=la lb中最大的一个,且此时C的下标最高位为i-1
    if(t) 
    {C[i]=t;
     for( j=i;j>=0;j--)
      printf("%d",C[j]);
    }
    else 
      {for( j=i-1;j>=0;j--)//如果t=0的话就表示没有进一,此时C的下标最高位为i-1
       printf("%d",C[j]);
      }

     return 0;
}


新鲜事 原文

Sweet.L
11天前
AcWing《寒假每日一题2022》拼团优惠!https://www.acwing.com/activity/content/introduction/88/group_buy/42333/