提交本题翻译
查看原帖
提交本题翻译
733345
ZYF26楼主2022/10/28 21:23

题目内容

编写一个程序,查找AiA_iBiB_i的总和。

其中AiA_iBiB_i都是32位有符号整数。

输入格式

重复输入AiA_iBiB_i,直到A=B=0A=B=0结束,这种情况不做处理。

其中:AiA_iBiB_i以空格分隔,各组数据用换行分隔。

输出格式

对于每个测试用例,Ai+BiA_i+B_i将值打印到一行。


A 问题完成,JAPLJ 前往测试。 由于疲劳,不幸的是,它给A+BA+B项目一个错误。 对于对JAPLJ负有全部责任的黄瓜,比赛的主要条件是什么,并告诉研究生马鲁巴希...

马鲁巴希:正确修复错误答案源代码,快点。

你必须对JAPLJ的三个错误程序进行一次测试,每个测试用例可以击落三个错误程序,因为你觉得你有责任来包罗所有负责的黄瓜。

挑战

对于以下三个代码中描述的 A+B Problem 错误答案程序(请参阅问题语句),请查找分别击落每个错误的测试用例。

更准确地说,对于各错误回答程序,分别编写满足A+B Problem的问题句,输入部分的制约的测试事例,在向错误回答程序提供该事例作为输入时输出错误回答的程序。

答案1的源代码:

#include <iostream>

using namespace std;

int main()
{
  int A, B;

  while(cin >> A >> B, A+B!=0) {
    cout << A+B << endl;
  }

  return 0;
}

答案2的源代码:

#include <iostream>

using namespace std;

int myAbs(int n)
{
  if(n < 0) return -n;
  else return n;
}

int main()
{
  int A, B;

  while(cin >> A >> B, (A|B) != 0) {
    while(myAbs(A) >= 100000) {
      if(A > 0) {
        B += 100000;
        A -= 100000;
      } else {
        B -= 100000;
        A += 100000;
      }
    }

    if(A > 0) {
      for(int i=0; i<A; ++i) {
        B++;
      }
    } else {
      for(int i=0; i<-A; ++i) {
        B--;
      }
    }

    cout << B << endl;
  }

  return 0;
}

答案3的源代码:

#include<iostream>

using namespace std;

int C[3][32];

int main()
{
  int A, B;

  while(cin >> A >> B, A!=0 || B!=0) {
    for(int i=0; i<32; ++i) {
      C[0][i] = (A >> i) & 1;
      C[1][i] = (B >> i) & 1;
    }

    for(int i=0; i<32; ++i) {
      if(C[0][i] + C[1][i] >= 2) {
        C[C[1][i-1] & 1][i+1]++;
        C[0][i]--;
        C[1][i]--;
      }
      C[2][i] = C[0][i] + C[1][i];
    }

    int R = 0;
    for(int i=0; i<32; ++i) {
      R |= C[2][i] << i;
    }

    cout << R << endl;
  }

  return 0;
}

输入格式

一行中只包含一个整数tt,表示求击第二个答案的测试用例。

输出格式

输出一个测试用例,以击落第二个答案。

输出的格式必须遵循A+BA+B提供程序的输入格式。

限制与评分标准

保证输入的tt满足1t31\le t\le 3

tt获得的分数
133 分
233 分
334 分

输入输出样例

这个问题没有输入输出例。

2022/10/28 21:23
加载中...