subtask#0求助(C)
  • 板块P1249 最大乘积
  • 楼主Yuanlj
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/2/4 18:07
  • 上次更新2025/2/4 22:06:47
查看原帖
subtask#0求助(C)
1651599
Yuanlj楼主2025/2/4 18:07
#include <stdio.h>

void multi(int result[],int n)
{
    int carry=0;
    for(int i=0;i<10000;i++)
    {
        int temp=result[i]*n+carry;
        result[i]=temp%10;
        carry=temp/10;
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    int a[n];
    int sum=0;
    int cnt=0;
    for(int i=2; sum<=n; i++,cnt++)
    {
        a[cnt]=i;
        sum+=i;
    }

    if(sum-n==1)
    {
        for(int i=0; i<cnt-2; i++)
        {
            a[i]=a[i+1];
        }
        a[cnt-2]=a[cnt-2]+2;
    }
    else if(sum-n>=2)
    {
        int d=sum-n;
        for(int i=d-2; i<cnt-2; i++)
        {
            a[i]=a[i+1];
        }
        a[cnt-2]=a[cnt-3]+2;
    }
    for(int i=0; i<=cnt-2; i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    int result[10000]={0};
    result[0]=1;
    for(int i=0;i<=cnt-2;i++)
    {
        multi(result,a[i]);
    }

    int len=10000-1;
    while(result[len]==0&&len>=1)
        len--;
    for(int i=len;i>=0;i--)
        printf("%d",result[i]);
    return 0;
}

2025/2/4 18:07
加载中...