演算法篇-開燈問題
題目:有n盞燈,編號1~n.第1個人把所有燈開啟,第2個人按下所有編號為2的倍數的開關(這些燈將被關掉),第3個人按下所有編號為3的倍數的開關(其中關掉的燈將被開啟,開著的燈將被關閉),依次類推。一共有k個人,問最後有哪些燈開著?輸入n和k,輸出開著的燈編號。k<=n<=1000;
樣例輸入:7 3
樣例輸出:1 5 6 7
程式碼如下:
#include <iostream>
#include <cstring>
#define MAXN 1001 //陣列開大點
using namespace std;
int a[MAXN];
int main()
{
int i,j,n,k,first=1;
memset(a,0,sizeof(a));
cin>>n>>k;
for (i=1;i<=k; i++)
{
for(j=1; j<=n; j++)
{
if (j%i==0)
a[j]=!a[j];
}
}
for(i=1; i<=n; i++)
if (a[i])
{
if(first)
first=0;
else
cout<<" ";
cout<<i;
}
return 0;
}
執行結果:
題目感覺還是有點難度的,至少我看見題目第一眼沒想出怎麼寫好,看了書上的c語言程式碼才有了想法,從這個題目中學到了兩點:
1:!不是取負,而是將0變成1或1變成0(這是我自己認為的,百度搜不到,也不知道是不是正確的)。以前一直以為就是取負。
2:可以通過設定標誌變數來避免輸出多餘空格。如題,第一個i前面是沒有空格的,當輸出第一個i後再輸出i前會輸出一個空格。
相關文章
- 百人開燈問題解法及優化優化
- 貪心演算法篇——區間問題演算法
- 多路口交通燈問題
- [-演算法篇-] 開篇前言演算法
- HP筆記本電源燈亮不能開機 - 靜電問題筆記
- iOS開發常見問題之綜合篇iOS
- iOS面試旗開得勝之問題篇iOS面試
- 解決關機後鍵盤滑鼠燈亮問題!
- 微軟面試題--三個燈泡--三個開關微軟面試題
- 【演算法題】任務分配問題---匈牙利演算法演算法
- react-native&android 之開發問題篇一ReactAndroid
- 移動端開發的相容問題(自我總結篇)
- 前端--開關燈前端
- 演算法問題基於蟻群演算法求解求解TSP問題(JAVA)演算法Java
- GE研發路燈網路連線技術 智慧路燈或可解決擁堵問題
- A+B 演算法問題演算法
- 演算法——路徑問題演算法
- go的演算法問題Go演算法
- 【演算法】8皇后問題演算法
- (演算法)跳躍問題演算法
- 燈燈燈
- 演算法題:矩陣鏈乘問題演算法矩陣
- 演算法題:頂點覆蓋問題演算法
- 測試開發專題-開篇
- BitComet位元彗星解決埠阻塞問題/黃燈問題,如何使用IPv6實現公網訪問
- 經典面試問題:12小球問題演算法(原始碼)面試演算法原始碼
- 分治演算法-眾數問題演算法
- 字串匹配問題——KMP演算法字串匹配KMP演算法
- 演算法:最短路徑問題演算法
- 演算法圖的著色問題演算法
- 演算法權重和問題演算法
- [演算法]全排列類問題演算法
- [演算法]組合類問題演算法
- 揹包問題的演算法演算法
- 【工作篇】介面冪等問題探究
- java 入門篇 問題集錦Java
- 解決問題oracle學習篇Oracle
- ORACLE 面試問題-技術篇 [轉]Oracle面試