溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

小代碼 千燈問題   (小學(xué)級別的感覺)

發(fā)布時(shí)間:2020-08-07 03:41:18 來源:網(wǎng)絡(luò) 閱讀:235 作者:wzdouban 欄目:編程語言
/***************
 *環(huán)境 http://tool.lu/coderunner/
 *解說: 
 *     千燈問題一 每個(gè)人關(guān)的自己的倍數(shù)
 ******************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 1000+10
int test1()
{
    int i,j,n,k,first=0;
    int a[max];
	 int COUNT=0;
     n=1000;k=3;
    memset(a,0,sizeof(a)); //0代表關(guān)燈,1代表開燈
     
    for(i=1;i<=k;i++)      //k個(gè)人
        for(j=1;j<=n;j++)  //n個(gè)燈
            if(j%i==0)
                a[j]=!a[j]; //取反,0變1,1變0,原來開變關(guān),關(guān)變開
/***************
  i=1  1000個(gè)全部置為1
  i=2  2偶數(shù)倍全置相反 為0
  i=3   3的倍數(shù)全部相反  編號 6 12  18  6的倍數(shù)轉(zhuǎn)了2次變?yōu)?
 ******************/
 	
                 
    for(i=1;i<=n;i++) //最后輸出a[i]的值就可以了
        if(a[i]){printf("%d ", i); COUNT++;}
     printf(":::::%d ", COUNT); //不明白你的代碼里面first是干嘛用的
    return 0;
}
int test2()
{/***************
 *環(huán)境 http://tool.lu/coderunner/
 *解說: 
 *     千燈問題二 關(guān)掉指定的倍數(shù)燈 
 * 簡單實(shí)現(xiàn) 不優(yōu)化版本
 ******************/
    int i,j,n,k1,k2,first=0;
    int a[max];
	 int COUNT=0;
     n=1000;k1=3;k2=7;
     
    for(i=0;i<=n;i++)     a[i]=i;
    for(i=0;i<=n;i++)       
         if(a[i]%k1==0)a[i]=0;
	 for(i=0;i<=n;i++)       
         if(a[i]%k2==0)a[i]=0;
	
           
                 
    for(i=1;i<=n;i++)       if(a[i]){ COUNT++;}
     printf(":::::%d ", COUNT); //不明白你的代碼里面first是干嘛用的
    return 0;
}


int main()
{
 test1();
test2();	
    return 0;
}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI