開燈問題用C語言怎麼解決 ?

2021-07-09 15:03:00 字數 1526 閱讀 9715

問題:走廊裡依次排列著100盞燈,依次從1號編100號,都關著。

有100個學生從1號編到100號,依次走來,

1號學生從第一只開關按起,凡是1的倍數都按一下,

2號學生從第二隻開關按起,凡是2的倍數都按一下,

3號學生從第三隻開關按起,凡是3的倍數都按一下,

依次類推,直到第100號學生按完為止。

最後有多少只燈亮著?

*/ #include

#define n 100

void main(void)

printf("\n");

j = 0;

for(i = 0; i < n; i++)  

} printf("\n\n");

} /*

l01: 1,  l02: 0,  l03: 0,  l04: 1,  l05: 0,  l06: 0,  l07: 0,  l08: 0,

l09: 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,

l01: 1,  l04: 1,  l09: 1,  l16: 1,  l25: 1,  l36: 1,  l49: 1,  l64: 1,

l81: 1,  l100: 1,

press any key to continue

*/對比幾個答案,做而論道編寫的程式,最簡單。

用c語言解決日期問題

用c語言計算日期。方法一 先算出到已知日期前的所有天數然後對7求餘數。計算所有天數的函式如下 int year sum int a int b int c 計算到輸入日期前的總共天數 平年每個月的天數 int e 閏年每個月的天數 while a 1 else sum 365 j 366 i if ...

問題 F 開燈問題(第二講)c語言

有n盞燈,編號為1 n,第1個人把所有燈開啟,第2個人按下所有編號為2的倍數的開關 這些燈將被關掉 第3個人按下所有編號為3的倍數的開關 其中關掉的燈被開啟,開著燈將被關閉 依此類推。一共有k個人,問最後有哪些燈開著?n和k,輸出開著的燈編號。k n 1000。輸出開著的燈編號 7 31 5 6 7...

演算法競賽 開燈問題 C

有n盞燈,編號為1 n。第1個人把所有燈開啟,第2個人按下所有編號為2的倍數的開關 這些燈將被關掉 第2個人按下所有的編號為3的倍數的開關 其中關掉的燈將被開啟,開著的燈將被關閉 以此類推。一共有k個人,問最後有哪些燈開著?輸入n和k,輸出開著的燈編號。k n 1000。樣例輸入 7 3 樣例輸出 ...