2036开关门,1109开关门
2023-12-14 23:31:30
一:2036开关门
1.1题目
1.2思路
1.每次都是房间号是服务员的倍数的时候做处理,所以外层(i)枚举服务员1~n,内层(j)枚举房间号1~n,当j % i=0时,做处理
2.这个处理指的是,开门的时候变成关门,关门的时候开门,所以可以用取反运算符=!
1.3代码
#include <stdio.h>
//2036开关门
int main()
{
int arr[1005] = { 0 };
int n = 0;
scanf("%d", &n);
int i = 0;
for (i = 2; i <= n; i++)
{
int j = 0;
for (j = 1; j <= n; j++)
{
if(j % i==0)
arr[j] = !arr[j];
}
}
for (i = 1; i <= n; i++)
{
if (arr[i] == 0)
{
printf("%d ", i);
}
}
return 0;
}
二:1109开关灯
2.1题目
2.2思路
这个题的本质和上面提的本质是一样的,只是服务员的数量和灯的数量不一定一样,但是代码是差不多的
2.3代码
#include <stdio.h>
//1109开关灯
int main()
{
int arr[50008] = { 0 };
int n = 0, m = 0;
scanf("%d %d", &n, &m);
int i = 0;
for (i = 2; i <= m; i++)
{
int j = 0;
for (j = 1; j <= n; j++)
{
if (j % i == 0)
{
arr[j] = !arr[j];//取反逻辑
}
}
}
int cont = 0;
for (i = 1; i <= n; i++)
{
if (arr[i] == 0)
{
if (cont == 0)
{
printf("%d", i);
cont++;
}
else
printf(",%d", i);
}
}
return 0;
}
文章来源:https://blog.csdn.net/2301_80096514/article/details/135005448
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!