9.6 巨人网络 AC 1.8

第一题 StringToFloat

死活都是 80% , 直接把输入的字符串输出就是 100% 。。

float ConvertStringToFloat(string str) {
    if(str.size() == 0) return 0.0;
    float res = 0, flag = 1, ind = -1, len = str.size(), base = 0.1;
    if(str[ind+1] == '+') ind++;
    if(str[ind+1] == '-') ind++, flag = -1;
    while(++ind < len && str[ind] != '.' && str[ind] >= '0' && str[ind] <= '9')
        res = res * 10 + str[ind] - '0';
    if(ind < len && str[ind] == '.') {
        while(++ind < len && str[ind] >= '0' && str[ind] <= '9')
            res += base * (str[ind] - '0'), base *= 0.1;
    }
    if(ind < len && str[ind] == 'E' || str[ind] == 'e') {
        bool isActive = true;
        if(str[ind+1] == '+') ind++;
        if(str[ind+1] == '-') ind++, isActive = false;
        int num = 0;
        while(++ind < len && str[ind] >= '0' && str[ind] <= '9')
            num = num * 10 + str[ind] - '0';
        while(num-- > 0) {
            if(isActive) res *= 10;
            else res /= 10;
        }
    }
    return res * flag;
}

第二题 求二维角度

如果题目早点告知这里的范围是 0~360 应该就不用浪费这么多时间了。。
调试到天荒地老,最后终于 A 了
最后没保存上代码,大概是这样的

float getRes(float x, float y) {
    if(y == 0 && x < 0) return 180;
    float mode = sqrt(x*x + y*y), res, pi = 3.14159265265;
    res = acos(x / mode) * 180.0 / pi;
    if(y < 0) return 360 - res;
    return res;
}
#笔试题目##巨人网络#
全部评论
一般成绩什么时候出来,有人知道嘛,还是直接就不通知了
点赞 回复 分享
发布于 2019-09-07 12:23
字符串里面可能有非数字和‘-’,‘.’的乱七八糟的字符,这类字符直接跳过,这样就可以AC了
点赞 回复 分享
发布于 2019-09-07 10:48
第一题ac,第二天我用反tan只给我50%😂😂
点赞 回复 分享
发布于 2019-09-06 23:57
我直接把输入给输出了……不知道算不算
点赞 回复 分享
发布于 2019-09-06 22:48
第一题是自然指数的问题, 直接cout输出的结果是"1e3"这种格式的,要改成cout<<std.fixed<< a << endl...
点赞 回复 分享
发布于 2019-09-06 22:46
1.8+1,巨人的编程是我做过最简单但是坑最多的。。
点赞 回复 分享
发布于 2019-09-06 22:33

相关推荐

03-26 15:18
已编辑
华北水利水电大学 Java
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务