🎇C++笔试强训
- 博客主页:一起去看日落吗
- 分享博主的C++刷题日常,大家一起学习
博主的能力有限,出现错误希望大家不吝赐教
- 分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。
💦🔥
某台微机安装的是 64 位操作系统,“ 64 位”指的是( )
A CPU的运算速度,即CPU每秒钟能计算64位二进制数据
B CPU的字长,即CPU每次能处理64位二进制数据
C CPU的时钟主频
D CPU的型号
这道题的答案是B
对于Linux说法,下列说法正确的是()
A 线性访问内存非法时,当前线程会进入信号处理函数
B 用mv命令移动文件时,文件的修改时间会发生变化
C ulimit -c设置的是函数调用栈的大小
D malloc函数是应用程序向操作系统申请内存的接口
这道题的答案是A
以下哪个命令可以改变进程的优先级
A twice
B chnice
C nice
D renice
这道题的答案是D
单任务系统中两个程序A和B,其中
A程序:CPU:10s -> 设备1:5s -> CPU:5s ->设备2:10s ->CPU:10s;
B程序:设备1:10s-> CPU:10s -> 设备2:5s ->CPU:5s ->设备2:10s;
执行顺序为A->B,那么CPU的利用率是()
A 30%
B 40%
C 50%
D 60%
这道题的答案是C
下述哪种情况会提出中断请求()
A 在键盘输入过程中,每按一次键
B 两数相加结果为零
C 计算结果溢出
D 一条系统汇编指令执行完成
这道题的答案是A
以下哪些不是内核对象()
A 进程
B 线程
C 互斥器
D 临界区
这道题的答案是D
在 Linux 中,如果系统的 umask 设置为 244,创建一个新文件它的权限是()
A --w-r–r–
B -r-xr–r–
C -r—w–w-
D -r-x-wx-wx
这道题的答案是C
由源代码生成可执行文件需要经过预编译,编译,汇编,链接等阶段,错误:unresolved external symbol BeginScene属于()阶段错误。
A 预编译
B 编译
C 汇编
D 链接
这道题的答案是D
程序出错在什么阶段()?
int main(void)
{
http://www.taobao.com
cout << "welcome to taobao" << endl;
return 0;
}
A 预处理阶段出错
B 编译阶段出错
C 汇编阶段出错
D 链接阶段出错
E 运行阶段出错
F 程序运行正常
这道题的答案是F
有一个变量int a=0;两个线程同时进行+1操作,每个线程加100次,不加锁,最后a的值是()?
A 200
B <=200
C >=200
D 都有可能
这道题的答案是B
arr = {3,2,5} arr的min为2,max为10,在区间[2,10]上,4是不能被任何一个子集相加得到的值中最小的,所以4是arr的最小不可组成和;
这是一个动态规划的01背包问题;
根据承重和已有的重量种类阶段性计算当前承重时能够放入的重量
当数组中只有2重量的时候,背包承重从2-10都可以放入2的数值 当数组中放入2和3重量的时候,背包承重从5-10,可以放入5,3-4放入3,2只能放入2 当数组中放入2,3,5重量时,背包承重10放入10,8-9放入8,7放入7,5-6,放入5…
w 2 3 4 5 6 7 8 9 10
2 2 2 2 2 2 2 2 2 2 3 2 3 3 5 5 5 5 5 5 5 2 3 3 5 5 7 8 8 10
最终当每个承重与放入的重量不同时,这个承重就是最小不可求和—4
class Solution {
public:
/**
* 正数数组中的最小不可组成和
* 输入:正数数组arr
* 返回:正数数组中的最小不可组成和
*/
int getFirstUnFormedNum(vector<int> arr, int len) {
int min = arr[0];
int max = 0;
for(int i = 0;i < len;i++)
{
if(arr[i] < min)
{
min = arr[i];
}
max += arr[i];
}
vector<int> dp(max+1,0);
for(int i = 0;i < len;i++)
{
//j : 背包空间大小
//dp[j] : 背包的最大承重
for(int j = max;j >= arr[i];j--)
{
if(dp[j] < dp[j-arr[i]] + arr[i])
{
dp[j] = dp[j-arr[i]] + arr[i];
}
}
}
for(int i = min;i <= max;i++)
{
if(i != dp[i])
{
return i;
}
}
return max + 1;
}
};
链接:有假币
平均分三份是最快的方法,两份进行称重(对比出三个的重量 ),后对最重的那份再次进行称重,直到称重的个数不足2个时则结束,获得假币 如果无法平均分3分则余数要么是1要么是2,因为是要最多称几次,n=n/3+1满足每次取最大 分称3份,取两份一样多的过秤,然后把三份中最多的那份继续分,直到硬币剩余0或1时截至
// write your code here cpp
#include
using namespace std;
int main()
{
int n;
while(cin >> n)
{
if(n == 0)
return 0;
int count = 0;
while(n > 1)
{
count++;
n = n/3 + (n % 3 > 0 );
}
cout << count << endl;
}
return 0;
}