c++ - 由于使用科学记数法而出错

标签 c++

我尝试了 Hackerearth 教程 question并能够使用以下代码正确解决它:

    #include <iostream>
    using namespace std;
    int main() {
        const long int MOD = 1000000007;
        const long int SIZE = 100001;
        long int t, n;
        long int cache[SIZE];

        cache[0] = 1;

        for (long int i = 1; i < SIZE; i++) {
            cache[i] = ( i * cache[i-1] ) % MOD;
        }

        cin >> t;
        while (t--) {
            cin >> n;
            cout << cache[n] << endl;
        }

        return 0;
    }

但是用科学记数法写MOD或SIZE时,在线判断会报错。我在这里缺少什么?

    #include <iostream>
    using namespace std;
    int main() {
        const long int MOD = 10e9+7;
        const long int SIZE = 100001;
        long int t, n;
        long int cache[SIZE];

        cache[0] = 1;

        for (long int i = 1; i < SIZE; i++) {
            cache[i] = ( i * cache[i-1] ) % MOD;
        }

        cin >> t;
        while (t--) {
            cin >> n;
            cout << cache[n] << endl;
        }

        return 0;
    }

最佳答案

科学计数法表示“常数乘以 10 的 x 次方”。如果您想要 1000000007,则需要 1e9,意思是“一个后跟九个零”。现在您使用 10e9,它是“十后跟九个零”或“一个后跟十个零”,所以您偏离了十分之一。

关于c++ - 由于使用科学记数法而出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56815355/

相关文章:

c++ - mmap + madvise 真的是异步 I/O 的一种形式吗?

c++ - 在 C++ 中模拟 Python 字典时出现映射错误

c++ - Q_DECL_EXPORT 关键字含义

c# - 如何测试一个矩形是否在另一个矩形中?

c++ - (-2147483648> 0) 在 C++ 中返回 true?

c++ - 如何重载操作数 << 以像 ostream 样式一样使用

c++ - 模板类规范的简化

c++ - 如何解析语法简单的输入命令?

c++ - 在 C++ 中获取百分比时遇到问题

c++ - 从旧的 DirectX 7 C++ 代码更新... [dx7vb.dll]