第一题:外星人比数的大小java
来自星星的都教授除了全部感官比地球人高出七倍,始终容颜不老之外,还拥有一项在地球人看来特别神奇的能力,他会瞬间(0.00000000000000000000001s之内)按照他的规则比较地球人熟悉的两个十进制数字的大小,他比较的规则以下:
一、将要比较的两个数字分别转换成二进制数字;
二、计算两个二进制数字中1的个数,个数多的数字为二者中的大者;
三、负数按照其绝对值进行比较;
请利用地球人发明的计算机程序逼近都教授的特异功能,实现时能够有如下约束:
一、输入数据为范围在-32768到32768(地球人的十进制世界)之间的任意两个数字;
二、若是通过比较后2个数相等,输出为0,若是不相等,输出最大值。若是输入非法,输出-1。spa
简单的字符串题code
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in =new Scanner(System.in); int m,n; String m1,n1; int mm,nn,mo = 0,no=0; mm=0; nn=0; Boolean flag=true; if(in.hasNextInt()) mo=in.nextInt(); else { flag=false;} if(in.hasNextInt()) no=in.nextInt(); else { flag=false;} if(!flag){ System.out.println("-1");return; } m=Math.abs(mo); n=Math.abs(no); if(m>32768 || n>32768){ System.out.println("-1");return; } m1=Integer.toBinaryString(m); n1=Integer.toBinaryString(n); //System.out.println(m1); //System.out.println(n1); for(int i=0;i<m1.length();i++){ if(m1.charAt(i)=='1'){ mm++; } } for(int j=0;j<n1.length();j++){ if(n1.charAt(j)=='1'){ nn++; } } if(mm>nn) System.out.println(mo); else if(mm<nn) System.out.println(no); else System.out.println("0"); } }
第二题:笨笨熊搬家打包篇
描述:
森林里的笨笨熊今天可开心啦——他买了新房子,乔迁新喜要搬家了。所以,笨笨熊请了许多好朋友来帮忙搬家,并准备了不少小纸盒用来装须要搬的物品,不过,这些纸盒的容积都是相同的,而且最多只能装两个物品。可是,为了避免打扰太多的朋友,笨笨熊想了个“聪明”办法:让每一个纸盒使用效率最高(注:只要纸盒容积大于物品的体积之和就认为能够装下;物品体积不会大于纸盒容积),这样须要的纸盒最少。为了帮助笨笨熊提早通知朋友,请你根据笨笨熊的办法,帮忙算出:须要纸盒的最少数目是多少?
运行时间限制: 无限制
内存限制: 无限制
输入:
整数V——纸盒的容积;
整数N——物品的总数目N;
共N个整数(对应N个物品的体积,每一个整数用空格隔开)。
输出:
整数M——须要纸盒的最少数目;
样例输入:
10
2
2 3
样例输出:
1blog
排序+贪心排序
import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in =new Scanner(System.in); int v,n,m; m=0; int k=0; v=in.nextInt(); n=in.nextInt(); int a[]=new int[n]; for(int i=0;i<n;i++){ a[i]=in.nextInt(); } Arrays.sort(a); for(int j=n-1;j>=k;j--){ if(a[j]+a[k]>v){ m++; } else { k++; m++; } } System.out.print(m); } }