股神问题-根据结果找规律

今天看了一个赛码上的编程题,做了半天。 

 

//https://exercise.acmcoder.com/online/online_judge_ques?ques_id=1664&konwledgeId=134

function cal(n) {
    if (n < 1 || n > 1000 * 10000 * 100) return; //不符合的数据
    var res = 1; //初始第一天为1的价值
    var count = 1; //计数
    var r = -2;
    var temp = 0; //累加的值

    if (n == 1) { //如果是第一天,返回1
        return 1;
    }

    do {
        temp = temp + count + 1;
        count += 1;
    } while (temp < n)

    for (var i = 1; i < count; i++) {
        r += 2;
    } //算出目标天数与目标价值的关系

    res = n - r; //求出价值结果
    return res;
}

print(cal(readInt()))

思路:根据列子找规律

 

也看了其他分享,简洁速度快,变量易读;

//答3 
// 提交时间 :2017-09-15 14:10:29 用时 :12 ms
// 占用内存 :5160 kb 代码长度 :132

(function getprice(n) {
    var day = 2,
        spacing = 2,
        i = 0;
    while (day < n) {
        i += 2;
        spacing++;
        day += spacing;
    }
    print(n - i);
})(read_line())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值