程序设计与算法(一)C语言程序设计CAP 第六周
2018-01-05 22:38
459 查看
1:Pell数列
描述Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1 + an - 2 (n > 2)。给出一个正整数k,要求Pell数列的第k项模上32767是多少。//即取余输入第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数k (1 ≤ k < 1000000)。输出n行,每行输出对应一个输入。输出应是一个非负整数。样例输入2 1 8样例输出
1 408
#include <iostream> #include <cstdio> using namespace std; const int M = 1000010; int a[M]; int main() { int n; cin>>n; a[1]=1; a[2]=2; for( int i=3;i<=M;++i) a[i]=( 2 * a[i-1] + a[i-2] ) %32767; int k; for( int i=0 ;i<n;++i) { cin>>k; cout<< a[k]<<endl; } }注解:本题主要在于对于模上的理解,以及输出语句的考虑。
2:求最大公约数问题
描述给定两个正整数,求它们的最大公约数。输入输入一行,包含两个正整数(<1,000,000,000)。输出输出一个正整数,即这两个正整数的最大公约数。样例输入6 9样例输出
3提示求最大公约数可以使用辗转相除法:假设a > b > 0,那么a和b的最大公约数等于b和a%b的最大公约数,然后把b和a%b作为新一轮的输入。由于这个过程会一直递减,直到a%b等于0的时候,b的值就是所要求的最大公约数。比如:9和6的最大公约数等于6和9%6=3的最大公约数。由于6%3==0,所以最大公约数为3。
#include <iostream> #include <cstdio> using namespace std; int Gcd( int a,int b) { if( a%b==0) return b; else return Gcd(b,a%b); } int main() { int a,b; cin>> a >> b; int i=Gcd(a,b); cout<<i<<endl; }注解;函数递归的例题之一,也可以不进行函数的调用
3:编程填空:第i位替换
描述写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第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; }输入第一行是整数 t,表示测试组数。每组测试数据包含一行,是三个整数 n, m 和 i (0<=i<=31)输出对每组输入数据,每行输出整型变量n变化后的结果样例输入
1 1 2 1样例输出
3提示二进制的最右边是第0位
#include <iostream>using namespace std;int bitManipulation1(int n, int m, int i) {//写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第i位和m的第i位相同,其他位和n相同。return (n &(~(1<<i)) | ((m>>i) & 1)<<i );} 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位取反
查看提交统计提问总时间限制: 1000ms 内存限制: 1024kB描述写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边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; }输入第一行是整数 t,表示测试组数。每组测试数据包含一行,是两个整数 n 和 i (1<=i<=32)。输出对每组输入数据,输出整型变量n中左边i位取反的结果。样例输入
1 0 32样例输出
-1
#include <iostream>using namespace std;int bitManipulation3(int n, int i) {// 写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边i位是n的左边i位取反,其余位和n相同return n ^ ( ~0<<(32-i));} int main() { int t, n, i; cin >> t; while (t--) { cin >> n >> i; cout << bitManipulation3(n, i) << endl; } return 0; }
5:编程填空:第i位取反
查看提交统计提问总时间限制: 1000ms 内存限制: 1024kB描述写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第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;}输入第一行是整数 t,表示测试组数。每组测试数据包含一行,是两个整数 n 和 i (0<=i<=31)。输出输出整型变量n中的第i位取反的结果样例输入
11 0样例输出
0
#include <iostream>using namespace std;int bitManipulation2(int n, int i) {// 使得函数返回值为一个整数,该整数的第i位是n的第i位取反,其余位和n相同return n ^ ( 1<<i) ;}int main() {int t, n, i;cin >> t;while (t--) {cin >> n >> i;cout << bitManipulation2(n, i) << endl;}return 0;}
相关文章推荐
- 程序设计与算法(一)C语言程序设计CAP 第二周编程作业
- 慕课-程序设计与算法(大学先修课)-郭炜-第六周练习题
- 程序设计与算法 第六周测验
- 运算符重载 编程题#1(Coursera 程序设计与算法 专项课程3 C++程序设计;重载:& operator =, operator =)
- 程序设计与算法(一)C语言程序设计CAP 第三周编程作业
- 枚举 编程题#1: 画家问题(Coursera 程序设计与算法 专项课程4;枚举方法:用二进制依次加1的进位方法模拟实现)
- 听课笔记---程序设计与算法(三)C++面向对象程序设计(郭伟老师)---第一周
- 文字排版 (Coursera 程序设计与算法 专项课程2 C程序设计进阶 李戈;OpenJudge)
- 实用算法的分析与程序设计——递推法(顺推法)包含实例,代码
- 算法课程第六周Leetcode作业
- RSA程序设计有关算法
- 笔记1_算法,程序设计,语言等_哈佛_计算机科学cs50_David J. Malan
- windows程序设计 之 「KeyView1」范例算法分析 笔记
- 算法设计与应用基础-第六周
- 多态与虚函数 编程题#2(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- 程序设计与算法(一)C语言程序设计CAP 第七周
- 【Windows 程序设计】【校招中常见的算法】【TensorFlow】【前端数据结构】| Chat · 预告
- 经典问题8:c/c++ 程序设计 ---bit位逆转高效算法问题
- 程序设计与算法(一)第一周测验(2017夏季) 解题报告
- 『算法学习笔记』1st day. 顺序结构程序设计