1、将要比较的两个数字分别转换成二进制数字;
2、计算两个二进制数字中1的个数,个数多的数字为两者中的大者;
3、负数按照其绝对值进行比较; 请利用地球人发明的计算机程序逼近都教授的特异功能,实现时可以有以下约束:
1、输入数据为范围在-32768到32768(地球人的十进制世界)之间的任意两个数字;
2、如果经过比较后2个数相等,输出为0,如果不相等,输出最大值。如果输入非法,输出-1。
输入:待比较的两个数 输出:按比较规则进行输出
样例输入:-30 20 样例输出:-30
#include<stdio.h>
int bigger(int a,int b)
{
if(a>32768 || a<-32768 || b>32768 || b<-32768)
return -1;
int tmpa=a>0?a:-a;
int tmpb=b>0?b:-b;
int Acount=0;
int Bcount=0;
Acount=tmpa % 2;
Bcount=tmpb % 2;
while(tmpa/2 != 0)
{
tmpa = tmpa/2;
Acount +=tmpa % 2;
}
while(tmpb/2 !=0)
{
tmpb = tmpb/2;
Bcount +=tmpb%2;
}
if(Acount == Bcount)
return 0;
else if(Acount > Bcount)
return a;
else if(Acount < Bcount)
return b;
else
return -1;
}
int main()
{
int a=-1;
int b=-1;
scanf("%d%d",&a,&b);
printf("%d\n",bigger(a,b));
return 0;
}