您好,登錄后才能下訂單哦!
/*************** *環(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; }
免責(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)容。