题目描述
穼柗有两个女朋友,一个叫DYX,一个叫FYY。经过深思熟虑,他决定要分一个。
他想通过抛硬币的方式,来决定应该分哪个。
但是他觉得只抛一次太随意了,于是他决定抛多次硬币,正面为1,反面为0。最终组成二进制整数,若为奇数,则留下DYX,否则留下FYY。
输入格式
输入共两行
第一行一个正整数
𝑛
n,表示他抛硬币的次数。
第二行
𝑛
n 个数,表示此次硬币朝上的一面。
输出格式
输出一行一个字符串,表示穼柗分的女朋友。
1≤n≤10
5
题目描述
穼柗有两个女朋友,一个叫DYX,一个叫FYY。经过深思熟虑,他决定要分一个。
他想通过抛硬币的方式,来决定应该分哪个。
但是他觉得只抛一次太随意了,于是他决定抛多次硬币,正面为1,反面为0。最终组成二进制整数,若为奇数,则留下DYX,否则留下FYY。
输入格式
输入共两行
第一行一个正整数
𝑛
n,表示他抛硬币的次数。
第二行
𝑛
n 个数,表示此次硬币朝上的一面。
输出格式
输出一行一个字符串,表示穼柗分的女朋友。
1≤n≤10
5
引自免费微信小程序:皆我百晓生
我理解你的问题了,这是一个关于二进制数和奇偶性的问题。穼柗需要抛硬币多次,并将正面朝上次数转换为二进制数。如果最终得到的二进制数表示的数值为奇数,则留下DYX,否则留下FYY。我们可以使用C语言来解决这个问题。以下是一个可能的解决方案:
首先,我们需要读取输入数据,包括抛硬币的次数和每次硬币朝上的结果。然后,我们将这些结果转换为二进制数,并计算这个二进制数对应的十进制数值。最后,我们根据这个数值是奇数还是偶数来确定留下的女朋友。
以下是相应的C语言代码:
#include <stdio.h>
int main() {
int n, coin_result, binary_num = 0, decimal_num;
scanf("%d", &n); // 读入抛硬币的次数
int coin_results[n]; // 存储每次硬币朝上的结果
for (int i = 0; i < n; i++) {
scanf("%d", &coin_result); // 读入每次硬币的结果
if (coin_result == 1) { // 如果是正面朝上,则在二进制数中添加1
binary_num = binary_num | (1 << i); // 使用位运算将二进制数中的对应位设为1
}
}
decimal_num = binary_num; // 将二进制数转换为十进制数
if (decimal_num % 2 == 1) { // 如果得到的十进制数是奇数
printf("DYX\n"); // 则留下DYX
} else {
printf("FYY\n"); // 否则留下FYY
}
return 0;
}
这个代码假设输入的硬币朝上结果为1表示正面,为0表示反面。对于每个硬币的结果,我们使用位运算将其添加到二进制数中。最后,我们检查这个二进制数对应的十进制数是奇数还是偶数来确定留下的女朋友。