根据图示思路来的,题中所给的测试用例运行正确,但显示答案错误

img

img


#include <stdio.h> 
#include <math.h> 
int main() 
{
    int T,n,a,b,min;
    scanf("%d",&T);
    for(int i=1;i<=T;i++)
    {
        scanf("%d%d%d",&n,&a,&b);
        if(a<=pow(10,9)&&b<=pow(10,9)&&n>=1)
        {
        
        if(n<=2)
        {
            if(a>b)
             printf("%d",b);
            else
             printf("%d",a);
        }
        else
        {
            if((a*1.0/2)<(b*1.0/3))
            {
                if(n%2==0)
                 printf("%d",a*(n/2)); 
                else
                {
                    if((a*(n/2)+a)<(a*((n/2)-1)+b))
                     printf("%d",a*(n/2)+a);
                    else
                     printf("%d",(a*((n/2)-1)+b));    
                }    
            }
            else
            {
                if(n%3==0)
                 printf("%d",b*(n/3)); 
                else if(n%3==1)
                {
                  min=b*(n/3)+a;
                  if(min>b*(n/3)+b)
                    min=b*(n/3)+b;
                  if(min>b*((n/3)-1)+a*2)
                    min=b*((n/3)-1)+a*2;
                  printf("%d",min);               
                }
                else
                {
                    if((b*(n/2)+a)>(b*(n/2)+b))
                     printf("%d",b*(n/2)+b);
                    else
                     printf("%d",b*(n/2)+a);
                        
                }
                
            }    
        }
        }
        if(i!=T)
         printf("\n");
    }
    return 0;
}



img

第50行这段else判断,应该是n/3,不是n/2

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632