当前位置: 代码迷 >> 综合 >> 程序设计与算法 | (12) Lecture(6) OJ作业
  详细解决方案

程序设计与算法 | (12) Lecture(6) OJ作业

热度:38   发布时间:2024-01-15 00:13:54.0

OJ地址

Lecture (6)包含以下五道编程题,可以在上面的OJ提交。

035:Pell数列

在这里插入图片描述

#include <iostream>
using namespace std;
#define Mod 32767int main(int argc, const char * argv[]) {
    int n,k;cin>>n;while (n--) {
    cin>>k;int a1=1,a2=2,res;if(k==1)cout<<a1<<endl;else if(k==2)cout<<a2<<endl;else{
    for(int i=1;i<=k-2;i++){
    res = 2*(a2%Mod)+(a1%Mod); //对最终结果取余 可以在运算的每一步进行取余 结果不变,而且可以防止溢出a1 = a2;a2 = res;}cout<<a2%Mod<<endl;}}return 0;
}

036:求最大公约数问题

在这里插入图片描述

#include <iostream>
using namespace std;int main(int argc, const char * argv[]) {
    int a,b;cin>>a>>b;if(a<b) //交换a,b{
    a = a^b;b = b^a;a = a^b;}int r = a%b;while(r){
    a = b;b = r;r = a%b;}cout<<b<<endl;return 0;
}

037:编程填空:第i位替换

在这里插入图片描述

#include <iostream>
using namespace std;int bitManipulation1(int n, int m, int i) //返回结果:把n的第i位 替换为 m的第i位
{
    return (~(1<<i)& n) | ((1<<i)&m);
}int main() {
    int n, m, i, t;cin >> t;while (t--) {
    cin >> n >> m >> i;cout << bitManipulation1(n, m, i) << endl;}return 0;
}

038:编程填空:第i位取反

在这里插入图片描述

#include <iostream>
using namespace std;int bitManipulation2(int n, int i) {
     //返回结果:对n的第i位取反 其余位不变 异或return (1<<i)^n;
}int main() {
    int t, n, i;cin >> t;while (t--) {
    cin >> n >> i;cout << bitManipulation2(n, i) << endl;}return 0;
}

039:编程填空:左边i位取反

在这里插入图片描述

#include <iostream>
using namespace std;int bitManipulation3(int n, int i) {
     //返回结果:对n的左边i位取反 其他位不变。return ((1<<31)>>(i-1))^n;
}int main() {
    int t, n, i;cin >> t;while (t--) {
    cin >> n >> i;cout << bitManipulation3(n, i) << endl;}return 0;
}
  相关解决方案