java算法-另一种阶乘问题(程序优化)
来源:互联网 发布:免费视频编辑制作软件 编辑:程序博客网 时间:2024/06/14 22:04
另一种阶乘问题
时间限制: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!!......+n!!的正确值样例输入2
3
5
样例输出5
23
来源[张洁烽]原创
/*
* 另一种阶乘问题
* 思路:此题为简单的算法题:唯一要做的就是优化程序
* 看下面的数:
* 1!!=2!!=1
* 3!!=4!!=3
* 5!!=6!!=15
* 7!!=8!!=105
* 有因为你n<=20这里就可以先写个辅助郑旭计算出
* 所有奇数的双阶乘然后在在程序中存储,以节约计算时间消耗
* 辅助程序如下:
*/
public class Main {
public static void main(String[] args) {
int sum = 1;
for (int i = 1; i < 20; i += 2) {
sum *= i;
System.out.print(sum+",");
}
}
}
运行结果:1,3,15,105,945,10395,135135,2027025,34459425,654729075,
/*
* 主程序如下:
*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int ary[] = { 1, 3, 15, 105, 945, 10395, 135135, 2027025, 34459425,
654729075 };
int a = sc.nextInt(), n, sum;
while (a-- > 0) {
n = sc.nextInt();
sum = 0;
for (int i = 0; i < ary.length; i++) {
if (n >= (i * 2 + 2)) {
sum += ary[i] * 2;
} else {
if (n >= (i * 2 + 1)) {
sum += ary[i];
}
else{
break;
}
}
}
System.out.println(sum);
}
}
}
- java算法-另一种阶乘问题(程序优化)
- 另一种阶乘问题(南阳oj65)
- 另一种阶乘问题
- 另一种阶乘问题
- NYOJ - 另一种阶乘问题
- 另一种阶乘问题
- 另一种阶乘问题
- 另一种阶乘问题
- 另一种阶乘问题
- 另一种阶乘问题
- 另一种阶乘问题
- 另一种阶乘问题
- 另一种阶乘问题
- nyoj_另一种阶乘问题
- 另一种阶乘问题
- NYOJ65另一种阶乘问题
- 65 另一种阶乘问题
- NYOJ-另一种阶乘问题
- 6、知乎日报 API 分析
- 3.(初级)CSS继承
- GridView里添加复选款和分页功能
- eclipse新建android工程style文件里的Theme老是报错
- HandlerThread源码分析
- java算法-另一种阶乘问题(程序优化)
- iOS之消息角标
- 整合Spring时Service层为什么不做全局包扫描详解
- 设计模式(7) ------- 适配器模式
- 最大公共子串
- C++语言--数组-6.1----数组在内存中的分布、数组名和函数、枚举常量
- 【C++】【USACO1.1.1】飞碟在这儿
- leetcode_middle_18_454. 4Sum II
- myBatis + SpringMVC上传、下载文件