既然只要最后一个,何必全部计算。。。
#include<stdio.h>int main() {
int m, n
while (scanf("%d%d", &n, &m) != EOF) {
int isOn = 0
do
if (n % m == 0)
isOn = !isOn
while (--m)
printf("%s\n", isOn ? "on" : "off")
}
return 0
}
你的代码的话,应该是输出的时候改成判断a[n]就可以了吧。
楼上那位同学是不知道有种东西叫oj么。。。
#include <stdio.h>#define n 100
void main(void)
{
int i, j, a[n]
for(i = 0i <ni++) a[i] = 0// 初始化为全0
for(i = 1i <= ni++)
for(j = i j <= nj = j + i)
a[j - 1] += 1
//100人对100灯,都操作完毕,下面是显示
for(i = 0i <ni++) {
if((i % 8) == 0) printf("\n")
printf(" L%2d: %d, ", i + 1, a[i] % 2)
}
printf("\n")
}
/*
运行结果显示如下:
L 1: 1, L 2: 0, L 3: 0, L 4: 1, L 5: 0, L 6: 0, L 7: 0, L 8: 0,
L 9: 1, L10: 0, L11: 0, L12: 0, L13: 0, L14: 0, L15: 0, L16: 1,
L17: 0, L18: 0, L19: 0, L20: 0, L21: 0, L22: 0, L23: 0, L24: 0,
L25: 1, L26: 0, L27: 0, L28: 0, L29: 0, L30: 0, L31: 0, L32: 0,
L33: 0, L34: 0, L35: 0, L36: 1, L37: 0, L38: 0, L39: 0, L40: 0,
L41: 0, L42: 0, L43: 0, L44: 0, L45: 0, L46: 0, L47: 0, L48: 0,
L49: 1, L50: 0, L51: 0, L52: 0, L53: 0, L54: 0, L55: 0, L56: 0,
L57: 0, L58: 0, L59: 0, L60: 0, L61: 0, L62: 0, L63: 0, L64: 1,
L65: 0, L66: 0, L67: 0, L68: 0, L69: 0, L70: 0, L71: 0, L72: 0,
L73: 0, L74: 0, L75: 0, L76: 0, L77: 0, L78: 0, L79: 0, L80: 0,
L81: 1, L82: 0, L83: 0, L84: 0, L85: 0, L86: 0, L87: 0, L88: 0,
L89: 0, L90: 0, L91: 0, L92: 0, L93: 0, L94: 0, L95: 0, L96: 0,
L97: 0, L98: 0, L99: 0, L100: 1,
Press any key to continue
*/
//我觉得7号灯肯定是在关闭状态//因为第1个人把所有等打开,那么只有第7个人是7的倍数,
//所以第7个人会把第7个灯关闭掉,7号灯的状态肯定是关闭的
//所以说你这个输出有可能是错误的。
//给你写的完整代码,希望能帮到你。
#include<stdio.h>
#define N 1000
struct Light
{
int num
int onOff //1打开 0关闭
}
int main()
{
int n,k,i
Light light[N]
scanf("%d %d",&k,&n)
if(k>n||n>1000) //不符合条件的直接返回
return 0
for(i=0i<Ni++) //初始化灯都是亮着的,因为第1个人会把所有灯打开
{
light[i].onOff = 1
light[i].num = i+1
}
for(i=2i<=ki++) //从第2个人开始循环,一直到第k个
for(int j=0j<nj++)
if(light[j].num%i==0&&light[j].num>=i) //如果灯的编号是人的编号的倍数,且灯号大于人号
{
if(light[j].onOff==1) //如果是开,就关闭,否则打开
light[j].onOff=0
else light[j].onOff=1
//输出信息
printf("i=%d 第%d号灯,状态:%d\n",i,light[j].num,light[j].onOff)
}
for(i=0i<ni++) //遍历,输出所有打开的灯
if(light[i].onOff==1)
printf("%d ",light[i].num)
printf("\n")
return 0
}