当前位置:网站首页>Blue Bridge Cup final XOR conversion 100 points

Blue Bridge Cup final XOR conversion 100 points

2022-07-07 16:59:00 @Little safflower

Problem description

The time limit : 3.0s Memory limit : 512.0MB The total score of this question :20 branch

Problem description

   Xiaolan has one 01 strand s = s1s2s3 ⋅ ⋅ ⋅ sn.
   Every moment in the future , Xiao Lan wants to be right about this 01 The string is transformed once . The rules for each transformation are the same .
   about 01 strand s = s1s2s3 ⋅ ⋅ ⋅ sn, Transformed 01 strand s' = s'1s'2s'3 ⋅ ⋅ ⋅ s'n by :
  s'1=s1;    
  s'i=si-1⊕si.
   among a ⊕ b Represents the XOR of two binary systems , When a and b The result is 0 , When a and b
   At different times, the result is 1.
   Excuse me, , after t After several transformations 01 What is string ?

Input format

   The first line of input contains two integers n,t, respectively 01 The length of the string and the number of transformations .
   The second line contains a length of n Of 01 strand .

Output format

   The output line contains a 01 strand , Is the transformed string .

The test sample 1
Input:
5 3
10110

Output:
11010

Explanation:
When the initial for 10110, Transformation 1 After three times, it becomes 11101, Transformation 2 After three times, it becomes 10011, Transformation 3 After three times, it becomes 11010.

Evaluate use case size and conventions

   about 40% The evaluation case of ,1 ≤ n ≤ 100 , 1 ≤ t ≤ 1000.
   about 80% The evaluation case of ,1 ≤ n ≤ 1000 , 1 ≤ t ≤ 10^9.
   For all profiling use cases ,1 ≤ n ≤ 10000 , 1 ≤ t ≤ 10^18.
 

Java

import java.util.Scanner;

public class  XOR transformation  {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int n = scanner.nextInt();
		int t = scanner.nextInt();
		int circle = 1;
		// The final rule is when greater than or equal to n One of the 2 In the case of an integer power of , There must be a cycle .
		while(circle < n) {
			circle <<= 1;
		}
		t %= circle;
		char[] arr = scanner.next().toCharArray();
		for(int i = 0;i < t;i++) {
			for(int j = n - 1;j > 0;j--) {
				if(arr[j] == arr[j - 1]) {
					arr[j] = '0';
				}else {
					arr[j] = '1';
				}
			}
			
			//System.out.println(new String(arr));
		}
		System.out.println(new String(arr));
	}

}

 

原网站

版权声明
本文为[@Little safflower]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071512070166.html