大数据学习--day04

选择结构、循环结构、大数据java基础面试题

switch:

注意:  

byte short int char String(jdk1.7支持)

不能是 long float double boolean 

while、do-while、for同c#

面试题:

大数乘法:随机给定两个超大整数,计算乘积。

思路:AB*CD = AC(BC+AD)BD

 public static void main(String[]arg)
    {

        String i1="111111111111111";
        String i2="222222222222222";
//        String i1="52";
//        String i2="63";
        char[] a1=i1.toCharArray();
        char[] a2=i2.toCharArray();
        int [] n1=new int[a1.length];
        int [] n2=new int[a2.length];
        int [] n=new int[a1.length+a2.length];

        for(int i=0;i<a1.length;i++)
        {
            n1[i]=a1[i]-(int)('0');
        }
        for(int i=0;i<a2.length;i++)
        {
            n2[i]=a2[i]-(int)('0');
        }
//        for(int i=0;i<a1.length;i++)//正着来加,要留一位,防止进位
//        {
//            for (int j=0;j<a2.length;j++)
//            {
//                n[i+j+1]+=n1[i]*n2[j];//?   n[i+j]+=n1[i]*n2[j]会在后面多个0
//            }
//        }
        for (int j=a2.length;j>0;j--)//反着来加
        {
            for(int i=a1.length;i>0;i--)
            {
                n[i+j-1]+=n1[i-1]*n2[j-1];//?   n[i+j]+=n1[i]*n2[j]会在后面多个0
            }
        }
        //满十进位,从后往前
        for(int i=n.length-1;i>0;i--)
        {
            n[i-1]+=n[i]/10;
            n[i]=n[i]%10;
        }
        String str="";
        for(int i=0;i<n.length;i++)//i从0开始,预留做进位
        {
            str+=""+n[i];
        }
        System.out.println(str);
    }

 十进制转二进制利用无符号右移和1&运算巧妙实现:

 public static void main(String[ ] args)
    {
        Scanner sc=new Scanner(System.in);
        System.out.println("输入一个数");
        int n=sc.nextInt();

        for(int i = 31;i >= 0; i--)
        {
         //倒着从0开始写,移动32次,>>>在前面补0,&1只有最后一位是1,所以做到了每次只比较一位数
            System.out.print(n >>> i & 1);
        }

    }

猜你喜欢

转载自www.cnblogs.com/symkmk123/p/9643211.html
今日推荐