NC54785. 小民与C语言 II
描述
int n, x, i; for(i = x = 0; i < n; ++ i) x ^= ar[i];
输入描述
第一行包含4个整数n x b c,含义见题
输出描述
输出一行,包含n个整数,表示ar的值,整数间用一个空格隔开
若不存在符合要求的ar,输出-1
若存在多组解,输出第2个位置值最小的解,若第2个位置值相等,输出第3个位置值最小的解,以此类推
示例1
输入:
1 12 4 12
输出:
12
Java 解法, 执行用时: 62ms, 内存消耗: 11240K, 提交时间: 2022-10-25 14:54:20
import java.util.Scanner; /** * @author 李豪峰 * @date 2022/10/24 20:07 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int x = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); if (x > Math.pow(2, b)) { System.out.println(-1); return; } System.out.print(c + " "); if (n != 1) { for (int i = 1; i < n - 1; i++) { System.out.print("0 "); } System.out.println(x^c); } } }
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2019-11-30 13:12:39
#include<iostream> #include<math.h> using namespace std; int main(){ int n,x,b,c; cin>>n>>x>>b>>c; int h=2<<(b-1); int l=x^c; if( h<c || h<l ){ cout<<-1<<endl; return 0; } if( n==1 ){ if( x!=c ){ cout<<-1<<endl; }else{ cout<<c<<endl; } return 0; } if( l<h ){ cout<<c<<" "; for(int i=1;i<=n-2;i++){ cout<<0<<" "; } cout<<l<<endl; } return 0; }
C++(clang++11) 解法, 执行用时: 7ms, 内存消耗: 408K, 提交时间: 2020-11-28 11:59:19
#include<iostream> #include<math.h> using namespace std; int A[1001]; int main() { int n,x,b,c; cin>>n>>x>>b>>c; if(x>pow(2.0,b)) { cout<<-1<<endl; return 0; } if(n==1) { cout<<x<<endl; } else { cout<<c<<" "; for(int i=2;i<n;i++) { cout<<0<<" "; } cout<<(x^c)<<endl; } return 0; }
Python3(3.5.2) 解法, 执行用时: 42ms, 内存消耗: 3448K, 提交时间: 2019-11-30 23:16:10
n, x, b, c = map(int, input().split()) if x >= 2 ** b: print(-1) else: print(c, end = '') if n > 1: print((n - 2) * ' 0', str(c ^ x))