求助:2个小编程题,都忘光了。
1.给你4个数字,选其中3个做全排列,一共有多少个不同也不重复的3位数?全部打印出来2.数列: 2/1 , 3/2, 5/3, 8/5, 13/8, 21/13, 34/21, …… 求前n项之和, 比如 若n=10 则是多少?
我记得是高中的极限和排序题,但是多少年不用全忘了。
程序代码:
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
String num[]=new String[4];
for (int i = 0; i < 4; i++) {
System.out.println("输入第"+(i+1)+"个数");
num[i]=input.nextInt()+"";
}
Set<String> set=new HashSet<String>();
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 4; k++) {
if(i==j || j==k || i==k){continue;}
String s=num[i]+num[j]+num[k];
if(s.startsWith("0")){continue;}//去除0开头的三位数
set.add(s);
}
}
}
System.out.println("个数:"+set.size());
for (String string : set) {
System.out.println(string);
}
}
}
程序代码:
import java.util.ArrayList;
import java.util.List;
public class Test3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int n=10;
List<Integer> list=new ArrayList<Integer>();
long down=1;
for (int i = 0; i <= n; i++) { //生成部分斐波那契数列
if(i==0 || i==1){
list.add(i+1);
down=down*(i+1);
}else{
int x=list.get(i-2)+list.get(i-1);
list.add(x);
if(i==n){continue;}
down=down*x;
}
}
StringBuilder sb=new StringBuilder();
long upsum=0;
for (int i = 1; i < list.size(); i++) {
sb.append(list.get(i)+"/"+list.get(i-1));
if(i!=list.size()-1){
sb.append("+");
}else{
sb.append("=");
}
upsum=upsum+down*list.get(i)/list.get(i-1);
}
System.out.println(sb);
System.out.println(upsum+"/"+down);
for (int i = 1; i < list.size(); i++) {//化简
int x=list.get(i);
if(upsum % x==0 && down % x==0){
upsum=upsum/x;
down=down/x;
i--;
}
}
System.out.println(upsum+"/"+down);
}
}