n!=1*2*3*.....*n; 求只含有奇数的1*3*5*7*9*11*......*n的最后一位; n属于long long int 范围 (保证n为奇数)java
时间: 2023-12-04 10:03:41 浏览: 68
根据引用中的要求,不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)来求n的阶乘。但是可以使用递归和逻辑运算符来实现。具体实现如下:
```java
public int factorial(int n) {
boolean flag = n > 0 && (n += factorial(n - 1)) > 0;
return n;
}
```
对于只含有奇数的1*3*5*7*9*11*......*n,可以发现每一项都是3的倍数,因此只需要求出n/3的余数即可知道最后一位是多少。具体实现如下:
```java
public int lastDigitOfOddFactorial(long n) {
return (int) Math.pow(2, n / 2) * (n % 2 == 0 ? 1 : -1) % 10;
}
```
相关问题
n!=1*2*3*.....*n; 求只含有奇数的1*3*5*7*9*11*......*n的最后一位; n属于long long int 范围 (保证n为奇数
根据提供的引用内容,有两种解法可以求只含有奇数的乘积的最后一位。
解法1:使用递归
```cpp
int multiplyOdd(int n) {
if (n == 1) {
return 1;
}
return (n % 10 * multiplyOdd(n - 2)) % 10;
}
```
解法2:使用循环
```cpp
int multiplyOdd(int n) {
int result = 1;
for (int i = 1; i <= n; i += 2) {
result = (result * (i % 10)) % 10;
}
return result;
}
```
n!=1*2*3*.....*n; 求只含有奇数的1*3*5*7*9*11*......*n的最后一位; n属于long long int 范围 (保证n为奇数)
以下是求只含有奇数的1*3*5*7*9*11*......*n的最后一位的Python代码:
```python
def last_digit(n):
if n == 1:
return 1
else:
return (last_digit(n-1) * (n % 10)) % 10
n = 101
result = last_digit(n)
print("只含有奇数的1*3*5*7*9*11*......*{}的最后一位为:{}".format(n, result))
```
阅读全文