超时,后来把比较两个数大小的运算符换成自己写的函数,改了下程序结构。。
但还是超时,没辙了,留着以后解决吧
#include<iostream>
#include<stdio.h>
using namespace std;
//a大于b返回true,a小于b返回false
bool cmp(unsigned int a,unsigned int b)
{
unsigned int c = a^b;
int n = 0;
//找到第一个不相同的位
while(!(c & 0xf0000000))
{
c <<= 4;
n += 4;
}
while(!(c & 0x80000000))
{
c <<= 1;
n++;
}
unsigned int d = 1<<(32-n-1);
//a中这个位为1则a大,否则b大
if(d & a)
return true;
else
return false;
}
int main()
{
unsigned int a[5];
unsigned int b[5];
bool flag = false;
while(true)
{
unsigned int maxa,maxb,sum;
scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4]);
scanf("%d%d%d%d%d",&b[0],&b[1],&b[2],&b[3],&b[4]);
for(int i =0;i<5;++i)
{
if(a[i] == EOF || b[i] == EOF)
{
flag = true;
break;
}
if(i ==0)
{
maxa = a[i];
maxb = b[i];
}
else
{
if(cmp(a[i],maxa))
maxa = a[i];
if(cmp(b[i],maxb))
maxb = b[i];
}
}
if(flag)
break;
sum = maxa+maxb;
printf("%d\n",sum);
}
return 0;
}