11 solutions
-
4
#include <bits/stdc++.h> using namespace std; long long roll(int n){ if (n == 1){ return 1; }else{ return roll(n - 1) * n; } } int main(int argc, char **argv){ double s = 1.0;int n; cin >> n; for (int i = 1;i <= n;i++){ s += 1.0 / roll(i); } printf("%.10f",s); return 0; }
-
0
15!=1,307,674,368,000很明显int不够存了,阶乘、指数这种运算尤其需要注意数据范围
隐式数据类型转换
C在以下四种类型中会进行隐式转换:
1. 算术运算符中,低类型转换为高类型 (1)有符号的和无符号的计算,会优先转换为无符号类型。 (2)其他转换规则如下:
易错
2. 赋值表达式中,右边的值自动隐式转换为左边变量的类型,并赋值 3. 函数调用参数传递,系统隐式将实参转换为形参的值 4. 函数有返回值,系统隐式返回表达式类型转换为返回值类型
- 1
Information
- ID
- 583
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- # Submissions
- 237
- Accepted
- 96
- Uploaded By