1.假设你有9个球和一个天平,其中一个略微重一些,那么最少要称多少次才能找出这个较重的球?
主要程序代码:
#include"stdafx.h"
#include"iostream.h"
int Weight(int iArray[],int iNum)
{
int iRet;
int iVar = iNum/3;
int jVar,mVar,nVar,kVar;
jVar = mVar = nVar =0;
for(int i=0;i<iVar;i++)
{
jVar+=iArray[i];
mVar+=iArray[i+iVar];
nVar+=iArray[i+iVar*2];
}
int *pArray = new int[iVar];
if(jVar > mVar)
{
kVar = 0;
}
else if(jVar<mVar)
{
kVar = 1;
}
else if(jVar == mVar)
{
kVar = 2;
}
if(iVar == 1)
{
iRet = i+iVar*kVar;
}
else
{
for(int j=0;j<iVar;j++)
{
pArray[i] = iArray[j+iVar*kVar];
}
iRet = Weight(pArray,iVar)+iVar*kVar;
}
delete[]pArray;
return iRet;
}
int main()
{
int Ball[] = {1,1,1,1,1,1,1,1,2};
int iWeightBall = Weight(Ball,9);
cout << "比较重的小球号码:" << endl;
cout << iWeightBall << endl;
return 0;
}
#include"stdafx.h"
int main()
{
int num = 2;
do
{
int sum =0,i = 1;
while(i < num / 2 + 1)
{
if(num % i == 0)
{
sum + = i;
}
i++;
}
if(num == sum)
{
printf("%d",num);
int j = 1;
while(j<num/2+1)
{
if(num%j == 0)
{
printf("%d",j);
}
j++;
}
printf("\n");
}
num++;
}
while(num<1001);
return 0;
}