问题标题: 酷町堂:4992 求解不等式

0
0
已解决
王子健
王子健
初级天翼
初级天翼

4992   求解不等式        经验值:800

题目描述 Description

已知不等式:1!+2!+……+m!<=n
对于以上不等式,现在输入n,求出m的最大值

输入描述 Input Description

一个整数n

输出描述 Output Description

一个整数m

样例输入 Sample Input

1

样例输出 Sample Output

1

数据范围及提示 Data Size & Hint

n<=100000000

 

#include <iostream>
#include <cstdio>
using namespace std;
long long jc(long long w) {
    int sum = 1;
    for (int i=1; i<=w; i++)
        sum *= i;
    return sum;
}
int main() {
    int n, ans = 0, x = 1;
    cin >> n;
    while (ans <= n) {
        ans += jc(x);
        x++;
    }
    cout << x;
    return 0;
}

思路100%没问题,但是代码一实现就有点问题了,望大佬改正


0
已采纳
黄子扬
黄子扬
初级天翼
初级天翼

判断ans>n时x要-1

while (1) {
        ans += jc(x);
        if(ans>=n) {
            x-=ans>n?1:0;
            break;
        }
        x++;
    }

 

0
我要回答