import java.util.ArrayList; import java.util.List; public class StrTest { public static void main(String[] args) { //模拟生成一个大整数 Long n=ShengCheng(); //拆分这个大整数,看看是由哪些东东组成的 List<Long> list =SplitNumber(n); for(int i=0;i<list.size();i++) { System.out.println(list.get(i)); } } /** * 功能:计算2的整数次方 * 作者:黄海 * 时间:2016-01-20 * @param n * @return */ private static long GetNumberById(int n) { return (long) Math.pow(2,n); } /** * 功能:模拟生成一个以2的整数次方为和加在一起的一个整数 * 作者:黄海 * 时间:2016-01-20 * @return */ private static long ShengCheng() { long a=GetNumberById(1)+GetNumberById(2)+GetNumberById(3)+GetNumberById(5)+GetNumberById(8)+GetNumberById(12)+GetNumberById(50); System.out.println(a); return a; } /** * 功能:将一个以2的整数次方为和加在一起的一个整数进行分拆,分拆成一个个2的整数次方形式 * @param n * @return */ private static List<Long> SplitNumber(long n) { List<Long> list = new ArrayList<Long>(); String s=Long.toBinaryString(n); int len=s.length(); for(int i=0;i<len;i++) { Long cur=Long.parseLong(s.substring(len-i-1,len-i)); if(cur>0) { list.add(GetNumberById(i)); } } return list; } }
时间: 2024-10-20 22:15:51