搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 1124|回复: 2
收起左侧

[技术支撑] C++的一道难题! 求解!!

[复制链接]

签到天数: 23 天

连续签到: 1 天

[LV.4]偶尔看看III

5

主题

1

好友

5176

积分

懒人

积分
5176
发表于 2017-11-4 16:45:23 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
Description
小六是个吃货,现在是冬天,但是小六想吃西瓜了,没关系,小六是个小女巫,她有办法变出西瓜。但作为一个有追求的女巫,小六对西瓜的要求也是很高的,小六要吃的西瓜形状可以各异,但是西瓜皮的体积一定要够(小六爱吃西瓜皮)。现在有一个西瓜,请你先帮小六看看,她会不会吃这个西瓜。

Input
分3行输入;
第一行:小六最少要吃的西瓜皮的体积V;
第二行:一个字母,代表西瓜外壳的形状(b:球体,c:立方体)一个正数r(形状为b时,代表球体半径;形状为立方体时,代表立方体边长);
第三行:一个字母,代表西瓜内瓤的形状(b:球体,c:立方体)一个正数r(形状为b时,代表球体半径;形状为立方体时,代表立方体边长);

Output
如果西瓜皮的的体积大于V,则输出“YES”,否则输出“NO”;

Sample Input
13
c 3
c 2

Sample Output
YES

HINT
建议数据用double型

评分

参与人数 1宅币 +3 收起 理由
Blue_sdo + 3 o(* ̄▽ ̄*)ブ 发糖 脑子有点乱 有空我想想.

查看全部评分

签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

签到天数: 1057 天

连续签到: 1 天

[LV.10]以坛为家III

241

主题

253

好友

9万

积分

Webmaster

工作组

积分
96410

凹凸世界 | 佩利星座|天蝎座国庆70周年纪念刀剑神域|桐人星座|金牛座杀戮の天使|艾札克杀戮の天使|瑞吉儿宫崎骏|龙猫1宫崎骏|龙猫3全职猎人|伊耳谜宫崎骏|千寻魔道祖师|金凌歌王|寿岭二Free|叶月渚野良神|雪音刀剑神域|诗乃

发表于 2017-11-7 22:52:33 | 显示全部楼层
大概思路应该是这样,我没学过C++语法,用js语法为例写的:
窗体设定:
1、输入框a1,输入体积V
2、输入框a2,输入外壳形状字母+分隔符+半径
3、输入框a3,输入内瓤形状字母+分隔符+半径
4、输出框b,输出结果

定义变量,类型转换
volume = a1;
shapeA1 = a2分隔符前;//形状
shapeA2 = a2分隔符后;
shapeB1 = a3分隔符前;//形状
shapeB2 = a3分隔符后;

定义体积函数,传入参数shape,value,以js为例:
funciton getBallVolume(shape,value){
        if(shape == "b"){
        return Math.pow(value,3); //求立方体体积,返回结果
        }
        else if(shape == "c"){
        return (3/4)*3.1415926*Math.pow(value,3) //求球体体积,返回结果
        }
};

定义变量计算体积,和输入的体积对比:
volumeInner = getBallVolume(shapeA1,shapeA2)+getBallVolume(shapeB1,shapeB2);

如果volumeInner > volume,那么输出框b显示YES,否则显示NO
回复 支持 反对

使用道具 举报

签到天数: 62 天

连续签到: 1 天

[LV.6]常住居民II

181

主题

18

好友

6万

积分

第三章

流光一瞬,离愁一身。

积分
68492
发表于 2017-11-30 20:47:32 | 显示全部楼层
本帖最后由 wugy315 于 2017-11-30 20:53 编辑

其实很简单呀。这是一道时间复杂度只有O(1)的题。
手上没有CPP的IDE。就从算法的角度用Java来提供一种解决方案供参考吧。

  1.         public String eatOrNot(double v,char out,double outR,char inside,double insideR) throws Exception{
  2.                 double vOut,vInside;
  3.                 switch (out) {
  4.                 case 'b':
  5.                         vOut = 4*Math.PI*Math.pow(outR,3)/3;
  6.                         //Math.PI是java的类库中提供的常量。CPP中没有的话可以作替换。
  7.                         //Math.pow是java类库中提供的立方计算方法。也可以做相应替换。
  8.                         break;
  9.                 case 'c':
  10.                         vOut = Math.pow(outR, 3);
  11.                         break;
  12.                 default:
  13.                         throw new Exception("小六暂时还变不出这种形状的西瓜呢~");
  14.                 }
  15.                 switch (inside) {
  16.                 case 'b':
  17.                         vInside = 4*Math.PI*Math.pow(insideR,3)/3;
  18.                         //Math.PI是java的类库中提供的常量。CPP中没有的话可以作替换。
  19.                         //Math.pow是java类库中提供的立方计算方法。也可以做相应替换。
  20.                         break;
  21.                 case 'c':
  22.                         vInside = Math.pow(insideR, 3);
  23.                         break;
  24.                 default:
  25.                         throw new Exception("小六暂时还变不出这种形状的西瓜呢~");
  26.                 }
  27.                
  28.                 if ((vOut-vInside)>v) {
  29.                         return "YES";
  30.                 }
  31.                
  32.                 return "NO";
  33.         }
复制代码
昔年种柳,依依汉南。
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-5-1 18:12 , Processed in 0.096074 second(s), 23 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表