观看建议调成浅色模式(右下角图标)
写前扯一下
这次省赛可谓是人才辈出啊。
结束前一个半小时就交卷,可见这次考试的难度。
后我问他们是不是很有信心AK
XX:做了前两题,后两题崩溃了。。。
好吧,其实第三题没那么难,不过AK的真没有,听说没有一个人做对。
接下来带大家看看这几题。(记得,看讲解前请先读懂题目,讲解时不会提到题目,直接讲)
T1
题目链接:https://www.topscoding.com/p/6847
比赛没几分钟我就听到了大佬们的尖叫:前两题!这么水!送分的吧
这里用一点小学数学知识即可解决。
众所周知,偶数乘奇数或偶数结果都为偶数
我们只要判断一下A、B是否为偶数就好了。
是就输出Yes
,否则No
SO?
所以这题不需要高精度
但是要用字符串。
这里说一下解决依据:偶数的末尾只可能是0、2、4、6、8
#include <bits/stdc++.h>
using namespace std;
string a, b;
int s1, s2;
int main()
{
freopen("analysis.in", "r", stdin);
freopen("analysis.out", "w", stdout);//文件操作
cin >> a >> b;
s1 = int(a[a.size() - 1] - '0'), s2 = int(b[b.size() - 1] - '0');//获取末尾
/*这里还可以替换成:
s1 = int(a.back() - '0'), s2 = int(b.back() - '0');
a.back()=获取a的最后一个字符
*/
if (s1 % 2 == 0 || s2 % 2 == 0)
{
cout << "Yes";
}
else
{
cout << "No";
}
return 0;
}
T2
这题好像又有人用高精度了。。
我们看一下范围啊,输入的数小于等于1000000
也就是说,算出来的数最多就是1000000的三次方
pow(1000000, 3) = 1000000000000000000
LONG_LONG_MAX = 9223372036854775807
这完全够啊!long long
最大值没背可以当场试啊。
所以,这题还是水题:
#include <bits/stdc++.h>
using namespace std;
long long n, a[1000005], b, sum;
int main()
{
freopen("algebra.in", "r", stdin);
freopen("algebra.out", "w", stdout);//文件操作
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
for (int i = 1; i <= n; i++)
{
cin >> b;
sum += a[i] * b;
}
cout << sum;
return 0;
}
(未完待续,记得推荐)
标签:偶数,AHOI,int,题解,s1,long,2024,freopen,s2 From: https://www.cnblogs.com/Yzc-wm/p/18136584