题目描述
Let’s consider some math problems.
JSZKC has a set A={1,2,…,N}. He defines a subset of A as ‘Meo set’ if there doesn’t exist two integers in this subset with difference one. For example, When A={1,2,3}, {1},{2},{3},{1,3} are ‘Meo set’.
For each ‘Meo set’, we can calculate the product of all the integers in it. And then we square this product. At last, we can sum up all the square result of the ‘Meo set’.
So please output the final result.
JSZKC has a set A={1,2,…,N}. He defines a subset of A as ‘Meo set’ if there doesn’t exist two integers in this subset with difference one. For example, When A={1,2,3}, {1},{2},{3},{1,3} are ‘Meo set’.
For each ‘Meo set’, we can calculate the product of all the integers in it. And then we square this product. At last, we can sum up all the square result of the ‘Meo set’.
So please output the final result.
输入
The input file contains several test cases, each of them as described below.
- The first line of the input contains one integers N (1 ≤ N≤ 100), giving the size of the set.
输出
One line per case, an integer indicates the answer
样例输入
3
样例输出
23
这个丢给有道翻译怎么看也看不懂....
主要是这句calculate the product of all the integers 就是将子序列中乘起来
然后找规律发现是(n+1)!-1
涉及到高精度 不会Java
#include <bits/stdc++.h> using namespace std; const int MAXN=10000; int f[MAXN]; int main() { int i,j,n; while(scanf("%d",&n)!=EOF) { memset(f,0,sizeof(f)); f[0]=1; for(i=2;i<=n+1;i++) { int c=0; for(j=0;j<MAXN;j++) { int s=f[j]*i+c; f[j]=s%10; c=s/10; } } f[0]-=1; j=0; while(f[j]<0){ f[j]+=10; j++; f[j]-=1; } for(j=MAXN-1;j>=0;j--) if(f[j]) break;//忽略前导0 for(i=j;i>=0;i--){ printf("%d",f[i]); } printf("\n"); } return 0; }