#include<iostream>
using namespace std;
void eightcoin(int arr[]);
void compare(int a, int b,int real, int index1,int index2);
void print(int jia, int zhen, int i);
int main()
{
int i = 0;
int arr[8];
cout<<"请输入八枚硬币:"<<endl;
for(i; i < 8; i++)
{
cin>>arr[i];
}
eightcoin(arr);
return 0;
}
void eightcoin(int arr[])
{
int abc = arr[0] + arr[1] + arr[2];
int def = arr[3] + arr[4] + arr[5];
int a = arr[0];
int b = arr[1];
int c = arr[2];
int d = arr[3];
int e = arr[4];
int f = arr[5];
int g = arr[6];
int h = arr[7];
if(abc > def) //6枚硬币必有一枚假币,g,h为真币
{
if((a + e) > (d + b)) //去掉c,f,且b,e互换后,没有引起天平变化,说明假币必然是a,d中的一个
{
compare(a, d, g,0,3);
}
else if((a + e) == (d + b))
{
compare(c,f,g,2,5);
}
else
{
compare(b,e,g,1,4);
}
}
else if(abc == def) //假币在g,h之中,最好状态
{
if(g == a)
{
print(h,g,7);
}
else
{
print(g,h, 6);
}
}
else //abc < def 这两组存在一枚假币,g,h为真币
{
if((a + e) > (d + b))
{
compare(b,e,g,1,4);
}
else if((a + e) == (d + b))
{
compare(c,f,g,2,5);
}
else
{
compare(a, d, g,1,3);
}
}
}
void compare(int a, int b,int real, int index1,int index2)
{
if(a == real)
{
print(b,real,index2);
}
else
{
print(a, real,index1);
}
}
void print(int jia, int zhen, int i)
{
if(jia > zhen)
{
cout<<"位置在:"<<(i + 1)<<"是假币!"<<"且偏重!";
}
else
{
cout<<"位置在:"<<(i + 1)<<"是假币!"<<"且偏轻!";
}
}
using namespace std;
void eightcoin(int arr[]);
void compare(int a, int b,int real, int index1,int index2);
void print(int jia, int zhen, int i);
int main()
{
int i = 0;
int arr[8];
cout<<"请输入八枚硬币:"<<endl;
for(i; i < 8; i++)
{
cin>>arr[i];
}
eightcoin(arr);
return 0;
}
void eightcoin(int arr[])
{
int abc = arr[0] + arr[1] + arr[2];
int def = arr[3] + arr[4] + arr[5];
int a = arr[0];
int b = arr[1];
int c = arr[2];
int d = arr[3];
int e = arr[4];
int f = arr[5];
int g = arr[6];
int h = arr[7];
if(abc > def) //6枚硬币必有一枚假币,g,h为真币
{
if((a + e) > (d + b)) //去掉c,f,且b,e互换后,没有引起天平变化,说明假币必然是a,d中的一个
{
compare(a, d, g,0,3);
}
else if((a + e) == (d + b))
{
compare(c,f,g,2,5);
}
else
{
compare(b,e,g,1,4);
}
}
else if(abc == def) //假币在g,h之中,最好状态
{
if(g == a)
{
print(h,g,7);
}
else
{
print(g,h, 6);
}
}
else //abc < def 这两组存在一枚假币,g,h为真币
{
if((a + e) > (d + b))
{
compare(b,e,g,1,4);
}
else if((a + e) == (d + b))
{
compare(c,f,g,2,5);
}
else
{
compare(a, d, g,1,3);
}
}
}
void compare(int a, int b,int real, int index1,int index2)
{
if(a == real)
{
print(b,real,index2);
}
else
{
print(a, real,index1);
}
}
void print(int jia, int zhen, int i)
{
if(jia > zhen)
{
cout<<"位置在:"<<(i + 1)<<"是假币!"<<"且偏重!";
}
else
{
cout<<"位置在:"<<(i + 1)<<"是假币!"<<"且偏轻!";
}
}