已知有n个硬币,其中有一枚假的,重量略轻,问以最复杂的情况最少需要多少次。
次数为 log(n)+1
思路 :其实就是分段查找吧?
数学解法
#include<stdio.h>
int main()
{
int times;
int n;
scanf("%d", ×); //要进行多少次
int a[times]; //共储存多少个数据
for(int j = 0; j < times; j++)
{
scanf("%d", &a[j]);
}
for(int i = 0; i < times; i++)
{
int count = 0;
while(a[i] != 0)
{
a[i] = a[i]/3;
count++;
}
printf("%d\n", count);
}
return 0;
}