求解
  • 板块学术版
  • 楼主leiteorz
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/9/26 13:31
  • 上次更新2023/11/4 05:37:08
查看原帖
求解
544953
leiteorz楼主2021/9/26 13:31

a,b,c表示长度为2,3,4的木棍个数 然后题目要求是求最多能组成多少根长度为10的木棍 样例都过了但是wa了qwq 应该是 334 244 2233 2224 22222 为最优解

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int t;
    scanf("%d",&t);
    long long a,b,c;//依次表示长度为2,3,4的木棍
    int i;
    long long x;//结果
    for(i=0;i<t;i++)
    {
        x=0;
        scanf("%lld%lld%lld",&a,&b,&c);
        if(b==0&&c==0)
        {
            x=(a-a%5)/5;
            printf("%d\n",x);
        }
        else if((a==0&&b==0)||(a==0&&c==0))
        {
            x=0;
            printf("%d\n",x);
        }
        else
        {
            if(b>=2*c)
            {
                x+=c;
                b-=2*c;
                c=0;

            }
            else if(b<2*c)
            {
                x+=(b-b%2)/2;
                c-=(b-b%2)/2;
                b=b%2;
            }
            if(c>=2*a)
            {
                x+=a;
                c-=2*a;
                a=0;
            }
            else if(c<2*a)
            {
                x+=(c-c%2)/2;
                a-=(c-c%2)/2;
                c=c%2;
            }
            if(a>=b)
            {
                x+=b/2;
                a-=(b-b%2);
                b=b%2;
            }
            else if(a<b)
            {
                x+=a/2;
                b-=(a-a%2);
                a=a%2;
            }
            if(a>=3*c)
            {
                x+=c;
                a-=3*c;
                c=0;
            }
            else if(a<3*c)
            {
                x+=(a-a%3)/3;
                c-=(a-a%3)/3;
                a=a%3;
            }
            if(a>=5)
            {
                x+=(a-a%5)/5;
                a=a%5;
            }
            printf("%lld\n",x);
        }
    }
    return 0;
}
2021/9/26 13:31
加载中...