65,179
社区成员




#include <stdlib.h>
#include <stdio.h>
int foo(int num)
{
int i = 1;
int count = 0;
while(i<num)
{
i<<=1;
++count;
}
return count;
}
void main()
{
printf("%d\n", foo(1001));
}
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#define LENGTH 256
int select_max(int* data, int* idx, int n)
{
int i, l, j;
for (i = 0; i < n; idx[i]=i,++i);
for (l = 1; l < n; l <<= 1)
for (i = 0; i + l < n; i += l<<1)
data[idx[i]] > data[idx[i+l]] ? 0 : (idx[i] = idx[i+l]);
return idx[0];
}
void my_sort(int* data, int n)
{
static int idx[LENGTH];
int t;
while (n--)
{
int j = select_max(data, idx, n+1);
t = data[j], data[j] = data[n], data[n] = t;
}
}
int main(int argc, char* argv[])
{
int data[256];
int i;
srand(time(NULL));
for (i = 0; i - 100; ++i)
data[i] = rand()%1000;
my_sort(data, 100);
for (i = 0; i - 100; ++i)
printf("%d\t", data[i]);
return 0;
}
#include <iostream>
using namespace std;
void main()
{
int a[100]={0};//将100个灯泡放入数组中并且初始化为0,0表示灯亮,1表示灯灭
for (int i=0;i<100;i++)//第一次,第偶数个是亮的,第奇数个是灭的。因为数组下标是从0开始的。
{
if (i%2==0)
{
a[i]=0;//第偶数个灯泡置为亮0
}
else if (i%2==1)
{
a[i]=1;//第奇数个灯泡置为灭1
}
}
for (int j=3;j<100;j++)
{
for (int i=j;i<100;i+=j)//第二次每隔两个再做开关(i+=3,第a[0]个是亮的,隔两个也就是第a[3]个进行开关灯,那么i每次加3),以此类推(第98次每隔98个再做开关i+=99,a[99]是第100个灯,那么第99和100次已经跨过第100个灯泡了)(i+=j)那么第一个永远是默认状态亮着的。所以i从第j个开始。(i=j)
{
if (a[i]==0)//如果是亮的,
{
a[i]=1;//就关灯。
}
else if (a[i]==1)//如果是灭的,
{
a[i]=0;//就开灯。
}
}
}
int n=0;//统计亮灯数
for ( i=0;i<100;i++)
{
if (a[i]==0)
{
n++;
}
else if(a[i]==1)
{
cout<<"a["<<i<<"]:"<<i<<endl;//显示第几个最终灯被熄灭。
}
}
cout<<"亮灯数:"<<n<<endl;
}
#include <stdio.h>
#include <math.h>
#define N 100 //灯的总数
int main(void)
{
int sum = 0;//用来累计熄灭的灯的个数
sum = N - int(sqrt(N));
printf("还剩下%d栈灯亮着\n",sum);
return 0;
}