# 计蒜客 30990.An Olympian Math Problem-数学公式题 (ACM-ICPC 2018 南京赛区网络预赛 A)

A. An Olympian Math Problem

• 54.28%
•  1000ms
•  65536K

Alice, a student of grade 6

We denote k!

k! = 1 \times 2 \times \cdots \times (k - 1) \times k

We denote S

S = 1 \times 1! + 2 \times 2! + \cdots +

Then S

You are given an integer n

You have to calculate S

### Input

The first line contains an integer T(T \le 1000)

For each test case, there is a line which has an integer n

It is guaranteed that 2 \le n\le 10^{18}

### Output

For each test case, print an integer S

### Hint

The first test is: S = 1\times 1!= 1

The second test is: S = 1\times 1!+2 \times 2!= 5

#### 样例输入

2
2
3

#### 样例输出

1
2

#### 题目来源

ACM-ICPC 2018 南京赛区网络预赛

 1 //A-数学公式
2 #include<iostream>
3 #include<cstdio>
4 #include<cstring>
5 #include<algorithm>
6 #include<bitset>
7 #include<cassert>
8 #include<cctype>
9 #include<cmath>
10 #include<cstdlib>
11 #include<ctime>
12 #include<deque>
13 #include<iomanip>
14 #include<list>
15 #include<map>
16 #include<queue>
17 #include<set>
18 #include<stack>
19 #include<vector>
20 using namespace std;
21 typedef long long ll;
22
23 const double PI=acos(-1.0);
24 const double eps=1e-6;
25 const ll mod=1e9+7;
26 const int inf=0x3f3f3f3f;
27 const int maxn=1e5+10;
28 const int maxm=100+10;
29 #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
30 //公式为1*1！+2*2！+3*3!+...+n*n!=(n+1)!-1,本题为(n!-1)%n
31 //因为n!-1=(n-1)*n-1=(n-2)*n+n-1,所以[(n-2)*n+(n-1)]%n=n-1
32 //因n*n!=(n+1-1)n!=(n+1)n!-n!=（n+1)!-n!
33 //所以：1*1!=2!-1!
34 //2*2!=3!-2!
35 //3*3!=4!-3!
36 //.
37 //n*n!=(n+1)!-n!
38 //相加后有：1*1!+2*2!+3*3!+.+n*n!=（n+1)!-1
39 //1*1!+2*2!+3*3!+.+n*n!=（n+1)!-1
40 //把最后一项拆开来,变成(n+1-1)n!=(n+1)n!-n!
41
42 int main()
43 {
44     int t;
45     cin>>t;
46     while(t--){
47         ll n;
48         cin>>n;
49         cout<<n-1<<endl;
50     }
51 }

posted @ 2018-09-12 21:26  ZERO-  阅读(682)  评论(0编辑  收藏  举报