今天我们在数学课上学习了用天平找次品。

(以下几张图片来自课本库网)

C++找次品_后端

C++找次品_#include_02

哈哈,根据道理我又能写程序了。

//Author:PanDaoxi
#include <iostream>
using namespace std;
int x,y,z;
int find(int n){
if(x==2||y==2){
cout<<1<<" "<<1<<endl;
return 0;
}
if(x==1&&y==1) return 0;
z=n%3,x=n/3,y=n/3;
y=x;
if(z==2){
x++;
}
else if(z==1) y++;
else x=y;
cout<<x<<" "<<x<<" "<<y<<endl;
find(x>y?x:y);
}
int main(){
int n;
cin>>n;
if(n==1){
cout<<-1<<endl;
return 0;
}
find(n);
return 0;
}

这个程序可以输出具体的称重过程:

C++找次品_开发语言_03

也可以根据范围,求出需要的次数,在这里不写了。

例如有100个零件,100在34~35之间,则需要5次即可。