ACM-ICPC Asia Phuket Regional Programing Contest 2009----J: Nowhere Money

题目链接:http://acm.bnu.edu.cn/contest/problem_show.php?pid=4279

这个题是道应该会超long long的题,先打出a[0]=1,a[1]=1,的斐波那契数列,然后从题目给定的数N开始每次输出与该数最接近

的一项和项数,N最大为5 X 1018,因此要用到JAVA,但貌似只有我们队用了JAVA,而且字节数还最长- -||

rookie的代码:

import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); BigInteger a[]=new BigInteger[101]; BigInteger num[]=new BigInteger[100]; while(cin.hasNext()){ BigInteger n = new BigInteger(cin.next()); a[0]=new BigInteger("1"); a[1]=new BigInteger("1"); for(int i=2;i<=100;i++) a[i]=a[i-1].add(a[i-2]); int num2=100,k=0; System.out.println(n.toString()); for(int j=num2;j>=0;j--){ if(a[j].compareTo(n)>0&&(a[j-1].compareTo(n)<0)){ num2=j-1; num[k++]=a[j-1]; n=n.subtract(a[j-1]); System.out.printf("%d ",num2); } } for(int j=num2;j>=0;j--){ if(a[j].equals(n)){ num[k++]=a[j]; n=n.subtract(a[j]); System.out.printf("%d ",j); } } System.out.printf("/n"); for(int i=0;i

你可能感兴趣的:(ACM解题报告)