2021アリ実習生筆記試験(2021-3-15)
第一題
テーマは大体あなたに3つの数a,b,cをあげて、それからaとbのバイナリビットに対して操作します.1回の操作は、いずれかの数のバイナリビットのみを逆にすることができます.最小限の操作でa|b=c.
コード実装
第二題ろうそく
第1題は時間を浪費しすぎたので,第2題は叙述をはっきり見なかった.直接1つのn/2を返しました!!!
テーマは大体あなたに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を返しました!!!