求助: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); } }