c语言,百灯熄灭问题,求思路!!!!
有M盏灯,编号为1~M,分别由相应的M个开关控制。开始时全部开关朝上(朝上为开,灯亮),然后进行以下操作:编号凡是1的倍数的灯反方向拨一次开关;是2的倍数的灯再反方向拨一...
有M盏灯,编号为1~M,分别由相应的M个开关控制。开始时全部开关朝上(朝上为开,灯亮),然后进行以下操作:编号凡是1的倍数的灯反方向拨一次开关;是2的倍数的灯再反方向拨一次开关;是3的倍数的灯又反方向拨一次开关,......,直到是M的倍数的灯又方向拨一次开关。请从键盘输入一个整数n代表灯的数量,求出最后为熄灭状态的灯(不亮)的数量以及编号并输出。
【输入】
输入一个整数n(1<=n<=100)。
【输出】
输出为两行,第一行是熄灭状态的灯的数量;第二行是最后为熄灭状态的灯的编号
求思路!!!!! 展开
【输入】
输入一个整数n(1<=n<=100)。
【输出】
输出为两行,第一行是熄灭状态的灯的数量;第二行是最后为熄灭状态的灯的编号
求思路!!!!! 展开
4个回答
展开全部
# include <stdio.h>
main(void)
{
int i, j, m, n;
int s[200];
scanf("%d", &m);
for(i=0; i<m;i++)
s[i] =1; //初始状态,开为1,关为-1
for(i=0; i<m;i++)
for(j=i; j<m; j=j+i+1)
s[j] =-1*s[j]; //状态翻转
n=0;
for(i=0; i<m; i++)
if (s[i]==-1)
n++ ; // 求数量
printf("\n %d\n", n);
for(i=0; i<m; i++)
if (s[i]==-1)
printf("%d ",i+1); //求编号
}
展开全部
这题so easy,此题被我占了!
# include <stdio.h>
# include <malloc.h>
int main(void)
{
int i, j, m, n;
char *ch;
scanf("%d", &n);
ch = malloc(n); //虽然要这几个内存不用,,,,但是有了它逻辑性就更强了.....
for(i=1; i<=n, i++)
{
for(j=0; j<=n; j+=i)
{
~ch[j];
m++
}
}
printf("%d\n%d\n", m, j-i-1);
free(ch);
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看我的:
#include<stdio.h>
int main()
{
int m,i,a;
scanf("%d",&m);
for(i=1;i<=m;i++) if((i*i)>m) break;
printf("%d\n",i-1);
for(a=1;a<=i;a++) printf("%4d",a*a);
return 0;
}
#include<stdio.h>
int main()
{
int m,i,a;
scanf("%d",&m);
for(i=1;i<=m;i++) if((i*i)>m) break;
printf("%d\n",i-1);
for(a=1;a<=i;a++) printf("%4d",a*a);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询