acwing 周赛(11)
Problem 1
Description
有三个正整数 a,b,c,我们不知道每个数的具体值,但我们知道 a≤b≤c。
现在,以随机顺序给出 a+b,a+c,b+c,a+b+c 的值,请你求出 a,b,c 的值。
Input
共一行,包含四个整数 x1,x2,x3,x4,表示以随机顺序给出的 a+b,a+c,b+c,a+b+c 的值。
Output
共一行,三个空格隔开的整数 a,b,c。
Solution
直接创建一个长度为4的数组x[4],对x数组排序,X[3]即为a+b+c的值,a = X[3] - X[2]、b = X[3] - X[1]、c = X[3] - X[0].
code
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int x[4];
cin >> x[0] >> x[1] >> x[2] >> x[3];
sort(x, x + 4);
cout << x[3] - x[2] << " " << x[3] - x[1] << " " << x[3] - x[0] << endl;
return 0;
}
Problem 2
Description
给定一个不含前导 0 的正整数 。
你可以对 进行删位操作。
每次操作,可以将 的任意一位数字删去,但是需要保证每次操作完成后的数字仍然是不含前导 0 的正整数。
如果想要使得 可以成为某个正整数的平方,那么最少需要对 进行多少次操作?
Input
第一行包含整数 ,表示共有 组测试数据。
每组数据占一行,包含一个整数 。
Output
每组数据输出一行结果,表示最少需要的操作次数,如果不可能使 变为某个正整数的平方,则输出 −1。
Data range
Solution
由于最大为,通过位运算,所以最多要模拟,对这1024种情况进行暴力求解,当第j位为1时,则选取第j位的数字,在判断是否是平方数就行了。
code
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
int T;
cin >> T;
while(T --)
{
string str;
cin >> str;
int n = str.size();
int res = 100;//取一个比较大的数
for(int i = 0; i < 1 << n; i ++)
{
int x = 0;
for(int j = 0; j < n; j ++)
if(i >> j & 1)
x = x * 10 + str[j] - '0';
int t = sqrt(x);
if(x && t * t == x) res = min(res, n - (int)to_string(x).size());
}
if(res == 100) cout << "-1" << endl;
else cout << res << endl;
}
return 0;
}
Problem 3
原题链接
还不会,明天补上
这次周赛就做出来一题,wu~~,第一题打卡题,比较简单;第二题没有什么思路;第三题看见题目就怕了。 慢慢加油吧!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人