CSDN竞赛第45期题解

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系列计算机的关键成功因素? 得到了政府的资助,并且有得力的助手

填空题

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

猜你喜欢

转载自blog.csdn.net/weixin_45750972/article/details/130152255