A. Arithmetic Array
题目大意: 给出一个长度为n的数组,让你求,你最少要在这个数组里添加几个非负整数,才能使这个数组的平均值为1 我的理解: 根据我的分析,无非就是先求出数组的和sum,若sum>n,则n-sum就是答案,(因为要使添加的数的个数尽可能少,所以每次都添加0) 而当sum<n的时候,只需要添加一个数就可以了 我的代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int t, n, a[60], i, num = 0;
long long sum = 0;
cin >> t;
while (t--)
{
sum = 0;
num = 0;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> a[i];
sum = sum + a[i];
}
if (sum == n)
num = 0;
else if (sum > n)
num = sum - n;
else if (sum < n)
num = 1;
cout << num << endl;
}
return 0;
}
B. Bad Boy
题目大意: 有一个n行m列的二维网格,其中有一个人站在i行,j列的位置,如果在网格中的任意位置丢下两个小球,则这个人将走到小球的位置把它捡起再回到初始位置。(人移动时,只能移动到相邻的格子)问,在哪两个位置丢下这两个小球,才能使这个人移动的步数最多 我的理解: 两个球放在距离人较远的格子角落里。 我的代码:
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int t, n, m, i, j, x1, x2, y1, y2;
int num1, num2;
cin >> t;
while (t--)
{
cin >> n >> m >> i >> j;
if (i == 1 && j == 1)
{
x1 = n;
y1 = 1;
x2 = n;
y2 = m;
}
else if (i == n && j == 1)
{
x1 = 1;
y1 = 1;
x2 = n;
y2 = m;
}
else if (i == 1 && j == m)
{
x1 = n;
y1 = 1;
x2 = n;
y2 = 1;
}
else if (i == n && j == m)
{
x1 = 1;
y1 = 1;
x2 = n;
y2 = 1;
}
else
{
x1 = 1;
y1 = 1;
x2 = n;
y2 = m;
}
cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<endl;
}
return 0;
}
第一次半个小时内a出AB两题还是有一丝丝成就感的(虽然这把的ab题很简单哈哈哈),C题不知道为什么,写出的代码被提示为木马文件,删除之后我的VScode貌似又少了好几个插件… 无语子,先去干个饭,回来修我的vscode呜呜~
|