您的位置:首页 > 其它

慕课-程序设计与算法(大学先修课)-郭炜-第六周练习题

2017-03-17 15:07 232 查看
1.Pell数列a1, a2, a3, …的定义是这样的,a1 = 1, a2 = 2, … , an = 2 * an − 1 + an - 2 (n > 2)。

给出一个正整数k,要求Pell数列的第k项模上32767是多少。

#include<iostream>
using namespace std;
unsigned int s[1000000];
unsigned int w[1000000];
int main()
{
int n,m;s[1]=1;s[2]=2;
for(int i=3;i<1000000;++i)
{
s[i]=(2*s[i-1]+s[i-2])%32767;
}
cin>>n;
for(int i=0;i<n;++i)
{
cin>>m;
w[i]=m;
}
for(int i=0;i<n;++i)
{
cout<<s[w[i]]<<endl;
}
return 0;
}


2.读入n(1 <= n <= 10000)个整数,求它们的和与均值。

#include<iostream>
using namespace std;
int main()
{
int n,m;
long long int sum=0;
cin>>n;
for(int i=0;i<n;++i)
{
cin>>m;
sum+=m;
}
printf("%ld %.5f",sum,sum/(double)n);
return 0;
}


3.写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第i位和m的第i位相同,其他位和n相同。

请使用【一行代码】补全bitManipulation1函数使得程序能达到上述的功能

#include <iostream>
using namespace std;

int bitManipulation1(int n, int m, int i) {
// 在此处补充你的代码
}

int main() {
int n, m, i, t;
cin >> t;
while (t--) {
cin >> n >> m >> i;
cout << bitManipulation1(n, m, i) << endl;
}
return 0;
}


#include <iostream>
using namespace std;

int bitManipulation1(int n, int m, int i) {
return ((1<<i)&m)|((~(1<<i))&n);
}

int main() {
int n, m, i, t;
cin >> t;
while (t--) {
cin >> n >> m >> i;
cout << bitManipulation1(n, m, i) << endl;
}
return 0;
}


4.写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第i位是n的第i位取反,其余位和n相同

请使用【一行代码】补全bitManipulation2函数使得程序能达到上述的功能

#include <iostream>
using namespace std;

int bitManipulation2(int n, int i) {
// 在此处补充你的代码
}

int main() {
int t, n, i;
cin >> t;
while (t--) {
cin >> n >> i;
cout << bitManipulation2(n, i) << endl;
}
return 0;
}


#include <iostream>
using namespace std;

int bitManipulation2(int n, int 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;
}


5.写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边i位是n的左边i位取反,其余位和n相同

请使用【一行代码】补全bitManipulation3函数使得程序能达到上述的功能

#include <iostream>
using namespace std;

int bitManipulation3(int n, int i) {
// 在此处补充你的代码
}

int main() {
int t, n, i;
cin >> t;
while (t--) {
cin >> n >> i;
cout << bitManipulation3(n, i) << endl;
}
return 0;
}


#include <iostream>
using namespace std;

int bitManipulation3(int n, int i) {
return ((int)(-2147483648)>>(i-1))^n;
}

int main() {
int t, n, i;
cin >> t;
while (t--) {
cin >> n >> i;
cout << bitManipulation3(n, i) << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐