(1!+2!+...+n!)%494273703C语言
时间: 2023-11-15 10:02:59 浏览: 66
这段引用提供了一个计算1!+2!+...+n!的C语言程序,并且给出了程序的逻辑和实现方法。但是没有直接回答题目中的问题。因此,我来回答一下这个问题。
要计算1!+2!+...+n!%494273703,可以使用循环结构,每次计算一个阶乘并将其加到总和中,最后对总和取模即可。具体实现方法可以参考引用中的代码实现。
相关问题
求 (1! + 2! + 3! + 4! + ...... n!) % 494273703. n <= 1000000000000000000. c语言
这道题目需要用到大数阶乘和取模的知识。由于n的范围非常大,我们需要使用高精度计算来计算阶乘和。同时,由于结果需要对一个很大的质数取模,我们需要使用快速幂算法来计算幂的模运算。
以下是C语言的代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define MOD 494273703
typedef long long ll;
ll pow_mod(ll a, ll b, ll p) {
ll ans = 1 % p;
while (b) {
if (b & 1) ans = ans * a % p;
a = a * a % p;
b >>= 1;
}
return ans;
}
ll fac_mod(ll n, ll p) {
ll ans = 1 % p;
for (ll i = 1; i <= n; i++) {
ans = ans * i % p;
}
return ans;
}
ll fac_sum_mod(ll n, ll p) {
if (n == 0) return 0;
if (n == 1) return 1;
ll k = n / p;
ll ans = pow_mod(2, k, p) * fac_sum_mod(n / p, p) % p;
for (ll i = k * p + 1; i <= n; i++) {
ans = (ans + fac_mod(i, p)) % p;
}
return ans;
}
int main() {
ll n;
scanf("%lld", &n);
printf("%lld\n", fac_sum_mod(n, MOD));
return 0;
}
```
计算1!+2!+3!+......+n!用c语言
以下是计算1!+2!+3!+......+n!的C语言代码:
```c
#include <stdio.h>
int main()
{
int n, i, j;
long long fact = 1, sum = 0;
printf("请输入一个正整数n:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
fact = 1;
for (j = 1; j <= i; j++) {
fact *= j;
}
sum += fact;
}
printf("1!+2!+3!+...+%d! = %lld\n", n, sum);
return 0;
}
```
阅读全文