CSDN竞赛第45期题解

本文介绍了两道CSDN编程竞赛中的题目,第一题涉及找到给定两个正整数构成的勾股数的第三个数,第二题要求找到离给定数字最近的回文数。同时,文章还探讨了量子计算的高效性原因以及计算机科学的历史,如模块化计算的起源和图灵机在可计算问题理论中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSDN竞赛第45期题解

1、题目名称:勾股数

勾股数是一组三个正整数,它们可以作为直角三角形的三条边。 比如3 4 5就是一组勾股数。 如果给出一组勾股数其中的
两个,你能找出余下的一个吗

ll a,b;cin>>a>>b;
if(a>b) swap(a,b);
ll x = b*b-a*a;
ll qx = (ll)sqrt(x);
ll y= b*b+a*a;
ll qy = (ll)sqrt(y);
if(qx*qx==x && qx+a>b){
cout<<qx<<'\n';
}
else if(qy*qy==y&&a+b>qy){
cout<<qy<<'\n';
}
else puts("-1");

2、题目名称:最近的回文数

回文数是一个非负整数,它的各位数字从高位到低位和从低位到高位的排列是相同的。 以下是一些回文数的例子: 0 1
33 525 7997 37273 现在给到一个数,求离它最近的一个回文数(离与它的差的绝对值最小)。如果这个数本身就是回
文数,那么就输出它本身。

class Solution {
public:
vector<long> getCandidates(const string& n) {
int len = n.length();
vector<long> candidates = {
(long)pow(10, len - 1) - 1,
(long)pow(10, len) + 1,
};
long selfPrefix = stol(n.substr(0, (len + 1) / 2));
for (int i : {selfPrefix - 1, selfPrefix, selfPrefix + 1}) {
string prefix = to_string(i);
string candidate = prefix + string(prefix.rbegin() + (len & 1), prefix.rend());
candidates.push_back(stol(candidate));
}
return candidates;
}
string nearestPalindromic(string n) {
long selfNumber = stol(n), ans = -1;
const vector<long>& candidates = getCandidates(n);
for (auto& candidate : candidates) {
// if (candidate != selfNumber) {
if (ans == -1 ||
abs(candidate - selfNumber) < abs(ans - selfNumber) ||
abs(candidate - selfNumber) == abs(ans - selfNumber) && candidate < ans) {
ans = candidate;
}
}
return to_string(ans);
}
}S;
int main(){
string n;
cin>>n;
cout<<S.nearestPalindromic(n)<<"\n";
return 0;
}

判断题

题目描述:
量子计算之所以有如此高的计算效率,根本原因是它突破了二进制。 错

选择题

第一个用模块化原理实现可编程计算机的是谁?
康拉德·楚泽

Z系列计算机和几百年前的差分机使用的部件数量基本相当,尤其是Z1也是纯机械实现的,前者却可以在较少的人力和预算下得以成功完成,以下哪一项不属于Z系列计算机的关键成功因素? 得到了政府的资助,并且有得力的助手

填空题

从数学上奠定了可计算问题的理论基础的,或者说计算机的数学模型是____。图灵机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷酷的Herio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值