程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 開燈問題(語言入門)

開燈問題(語言入門)

編輯:關於C語言

\

/****************************************************************************************
   題目鏈接:
               http://acm.nyist.net/JudgeOnline/problem.php?pid=77
   思    路:
               首先是輸入2個數據,然後定義一個數組,介於燈只有2種狀態,
               所以就定義成bool類型,然後初始化為0,代表燈起初全部是關閉狀態。
               接著是2個循環,外面的循環代表從編號為1的人開始,直到結束。
               裡面的循環代表從編號為1的燈進行操作,把符合要求的燈的狀態改變為和原來相反的狀態即可。
               最後判斷哪些燈是開的,將它的編號輸出。
               由於最後的輸出中,除了第一個輸出的前面沒有空格,其它的結果前面都有空格,
               所以就把第一個就單獨考慮。
****************************************************************************************/
#include 
#include 
#include 
using namespace std;
int main(void)
{
    int n,k;
	 while(cin>>n>>k)
	 {
		  bool *lamp = (bool *)malloc((n+2)*sizeof(bool));
		  memset(lamp,0,(n+2)*sizeof(lamp));
		  for(int i=1; i<=k; i++)//人數遍歷
           for(int j=1; j<=n; j++)//燈數遍歷
           	  if(j % i == 0)
	             * (lamp+j) = !*(lamp+j);
		  cout<<1;
		  for(int j=2; j<=n; j++)
		     if(*(lamp+j) == 1)
		       cout<<" "<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved