2021アリ実習生筆記試験(2021-3-15)


第一題
テーマは大体あなたに3つの数a,b,cをあげて、それからaとbのバイナリビットに対して操作します.1回の操作は、いずれかの数のバイナリビットのみを逆にすることができます.最小限の操作でa|b=c.
コード実装
package com.fwh;

import java.util.Scanner;

/**
 * @ClassName Main
 * @Description :TODO
 * @Author Josvin
 * @Date 2021/03/15/19:05
 */
public class Main {
     
    public static void main(String[] args) {
     
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();// n = 2
        while (n-- > 0) {
     
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            int c = scanner.nextInt();
            //     a|b  ,   c               。(                  )
            int d = a | b;
            //  a&b  1 bit       a&b&c      bit   1  
            int t = (a & b) ^ (a & b & c);// 0010 0110   0010  0101
            int cc = t & c;
            //         bit        
            int count1 = 0;
            while (t != 0) {
     
                if ((t & 1) == 1) {
     
                    count1++;
                }
                t = t >>> 1;
            }
            int ans = d ^ c;
            int count = 0;
            while (ans != 0) {
     
                if ((ans & 1) == 1) {
     
                    count++;
                }
                ans = ans >>> 1;
            }

            System.out.println(count1 + count);
        }
    }
}


第二題ろうそく
第1題は時間を浪費しすぎたので,第2題は叙述をはっきり見なかった.直接1つのn/2を返しました!!!