零基础洛谷刷题记录
Day01 2024.11.18
Day02 2024.11.25
Day03 2024.11.26
Day04 2024.11.28
Day05 2024.11.29
Day06 2024 12.02
Day07 2024.12.03
Day08 2024 12 05
Day09 2024.12.07
Day10 2024.12.09
Day11 2024.12.10
Day12 2024.12.12
Day13 2024.12.16
Day14 2024.12.17
Day15 2024.12.18
Day16 2024.12.19
Day17 2024.12.21
Day18 2024.12.23
Day19 2024.12.24
Day20 2024.12.25
Day21 2024.12.26
Day22 2025.01.19
Day23 2025.01.21
硬币反转
1146:题目描述
在桌面上有一排硬币,共 N 枚,每一枚硬币均为正面朝上。现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意 N−1 枚硬币(正面向上的被翻转为反面向上,反之亦然)。求一个最短的操作序列(将每次翻转 N−1 枚硬币成为一次操作)。
1146:AC代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int num;//不大于100的偶数
scanf("%d", &num);
int tag[105] = { 0 };//0代表正面朝上
int sum = 0;
for (int i = 0; i < num; i++)
{
sum += tag[i];
}
int operate = 0;
printf("%d\n", num);
while (sum != num)
{
operate++;
for (int i = 0; i < num; i++)
{
if (i == operate - 1)
{
continue;
}
tag[i] = 1 - tag[i];
}
for (int i = 0; i < num; i++)
{
printf("%d", tag[i]);
}
printf("\n");
sum = 0;
for (int i = 0; i < num; i++)
{
sum += tag[i];
}
}
return 0;
}
1146:学习成果
- 不小心发现了规律:操作次数等于num,并且操作过程就是依次不反转1-num的硬币,其他反转即可