NYOJ题目65另一种阶乘问题

-------------------------------

水、

当然水题也要有缓存,缓存复用真是伟大的思想,膜拜提出此思想的不知道名字的神犇。

AC代码:

 1 import java.util.Scanner;
 2
 3 public class Main {
 4
 5     public static void main(String[] args) {
 6
 7         Scanner sc=new Scanner(System.in);
 8
 9         int times=sc.nextInt();
10         while(times-->0){
11             int n=sc.nextInt();
12             System.out.println(solve(n));
13         }
14     }
15
16     private static long buffer[]=new long[21];
17
18     public static long fac(int n){
19         if(n/2*2==n) return 0;
20         if(n==1) return 1;
21         if(buffer[n]!=0) return buffer[n];
22         return buffer[n]=fac(n-2)*n;
23     }
24
25     public static long solve(int n){
26         long res=0;
27         while(n>0) res+=n/2*2==n?fac(n---1):fac(n--);
28         return res;
29     }
30
31 }

题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=65

时间: 2024-11-03 22:22:22

NYOJ题目65另一种阶乘问题的相关文章

nyist 65 另一种阶乘问题

另一种阶乘问题时间限制:3000 ms | 内存限制:65535 KB 难度:1描述 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种新的阶乘概念,将原来的每个数相乘变为i不大于n的所有奇数相乘例如:5!!=1*3*5.现在明白现在这种阶乘的意思了吧! 现在你的任务是求出1!!+2!!......+n!!的正确值(n<=20) 输入第一行输入一个a(a<=20),代表共有a组测试数据接下来a行各行输入一个n. 输出各行输出结果一个整数R表示1!!+2!!...

南阳理工另一种阶乘问题

#include<stdio.h>int main(){  int n,m;  int sum,i;  int a[21];  int t=1,t1=1;  for(i=1;i<21;i=i+2)  {   a[i]=t*t1;   a[i+1]=a[i];   t=t1*t;   t1=t1+2;  }  scanf("%d",&n);  while(n--)  {   sum=0;   scanf("%d",&m);   for

另一种阶乘问题(南阳oj65)

另一种阶乘问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种新的阶乘概念,将原来的每个数相乘变为i不大于n的所有奇数相乘例如:5!!=1*3*5.现在明白现在这种阶乘的意思了吧! 现在你的任务是求出1!!+2!!......+n!!的正确值(n<=20) 输入 第一行输入一个a(a<=20),代表共有a组测试数据 接下来a行各行输入一个n. 输出 各行输出结果一个整数R表示1!!

NYOJ 题目56 阶乘式因式分解(一)

题目描述: 给定两个数m,n,其中m是一个素数. 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m. 输入 第一行是一个整数s(0<s<=100),表示测试数据的组数随后的s行, 每行有两个整数n,m. 输出 输出m的个数. 样例输入 2 100 5 16 2 样例输出 24 15我的代码://AC #include<stdio.h>int main(){ int s,k; scanf("%d",&s); while(s--)

NYOJ题目28大数阶乘

-------------------------------------祭出BigInteger AC代码: import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); BigInteger ans=fac(n);

nyOJ基础题:另一种阶乘问题 如1!!+2!!+3!!

#include<stdio.h> int jCheng[21];//as you like void generateSpecialJCheng(int input){ //!!阶乘存入第k个位置 for(int k = 1; k <= input; ++k){ int summary = 1; for(int s = 1; s <= k; s += 2){ summary *= s; } jCheng[k] = summary; } } int main(){ generate

ACM试题 - 另一种阶乘问题

1. ACM试题题源:http://acm.nyist.net/JudgeOnline/problem.php?pid=65 描述 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种新的阶乘概念,将原来的每个数相乘变为i不大于n的所有奇数相乘例如:5!!=1*3*5.现在明白现在这种阶乘的意思了吧! 现在你的任务是求出1!!+2!!......+n!!的正确值(n<=20) 输入 第一行输入一个a(a<=20),代表共有a组测试数据 接下来a行各行输入一个n.

每日一九度之 题目1076:N的阶乘

时间限制:3 秒 内存限制:128 兆 特殊判题:否 提交:7601 解决:2749 题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 样例输入: 4 5 15 样例输出: 24 120 1307674368000 大数的乘法. //Asimple #include <iostream> #include <algorithm> #include <cstring

另一种阶乘问题

描述 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种新的阶乘概念,将原来的每个数相乘变为i不大于n的所有奇数相乘例如:5!!=1*3*5.现在明白现在这种阶乘的意思了吧! 现在你的任务是求出1!!+2!!......+n!!的正确值(n<=20) 输入 第一行输入一个a(a<=20),代表共有a组测试数据 接下来a行各行输入一个n. 输出 各行输出结果一个整数R表示1!!+2!!......+n!!的正确值 样例输入 2 3 5 样例输出 5 23 1 #i