土豪金

现在有两种金条,每种都有无限多个,一种是长宽高为​1x1x2的金条,价值​3元;另一种是长宽高为1x1x3​的金条,价值​5元。助教找到了一个装金条的箱子,箱子的长宽高为axbxc​。

现在想叫你装价值最高的金条进去,如果你装对了,他会给你1.5分的期末成绩。

输入描述

输入共一行三个整数a,b,c [1,1000000],表示箱子的长宽高。

输出描述

输出一个数,表示箱子中金条的总价值的最大值。

  测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助
测试用例 1 以文本方式显示
  1. 1 3 3↵
以文本方式显示
  1. 15↵
1秒 64M 0
测试用例 2 以文本方式显示
  1. 3 4 4↵
以文本方式显示
  1. 80↵
1秒 64M 0
测试用例 3 以文本方式显示
  1. 2 1 1↵
以文本方式显示
  1. 3↵
1秒 64M 0
#include<stdio.h>   
#include<stdlib.h>   
int main()   
{   
    double a,b,c;   
    scanf("%lf%lf%lf",&a,&b,&c);   
    double volume=a*b*c,f1,f2,f3;   
    double find1,find2,find3;   
    char s1[30],s2[30],s3[30];   
    if(a>2||b>2||c>2)   
    {   
        f1=volume/3*5;           //全为长金块    
        f2=(volume-1)/3*5+1;     //含两短(换一长)    
        f3=(volume-2)/3*5+3;     //含一短    
        while(1){                     //检验f1,f2,f3谁为整数,输出为整数的那一个到f1    
            sprintf( s1, "%.0lf", f1);   
            sscanf( s1, "%lf", &find1);   
            if(f1==find1) break;   
            sprintf( s2, "%.0lf", f2);   
            sscanf( s2, "%lf", &find2);   
            if(f2==find2) {f1=f2; break;}   
            sprintf( s3, "%.0lf", f3);   
            sscanf( s3, "%lf", &find3);   
            if(f3==find3) {f1=f3; break;}              
       }   
             
    }   
    else   
    {   
      f1=((int)volume)/2*3.0;  //只能装短金块    
    }  
      
    //printf("%.0f\n",f1);  
    int q=(int)a%3,w=(int)b%3,e=(int)c%3;  
    if ((q==2)&&(w==2)&&(e==2)&&(a+b+c>6)&&((a-2)*(b-2)*(c-2)>=0)&&((a==2&&b==2&&c!=2&&c>4)||(b==2&&a!=2&&c==2&&a>4)||(c==2&&b!=2&&a==2&&b>4)) ) f1=(volume-8)/3*5.0+12.0;  //不是螺旋排列   
  
      
    char *str;    
    int digits=0,dec,sign;  
    if(f1==0) printf("0\n");  
    else  
    {  
        str = (char*)fcvt(f1, digits, &dec, &sign);    
        printf("%s\n",str);  
    }  
 }    
 //样例37 2,5,5 83  一个2,短金条中间竖着放,螺旋排列  
 //样例39 2,2,5 32  
发布了19 篇原创文章 · 获赞 1 · 访问量 173

猜你喜欢

转载自blog.csdn.net/CN_BIT/article/details/104648984
今日推荐