3.13打卡day34
10.分解质因数
问题描述
求出区间[a,b]中所有整数的质因数分解。
输入说明
输入两个整数a,b。
2<=a<=b<=10000
输出说明
每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看范例)
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int n){
if(n==0 || n==1)
return false;
for(int i=2;i<=n/2;i++){
if(n%i==0)
return false;
}
return true;
}
vector<int> fenjie(int n){
vector<int> ans;
int i=2;
while(!isPrime(n)){
if(n%i==0){
n/=i;
ans.push_back(i);
i=2;
}
else
i++;
}
ans.push_back(n);
return ans;
}
int main(){
int a,b;
cin>>a>>b;
for(int i=a;i<=b;i++){
vector<int> ans = fenjie(i);
cout<<i<<"=";
for(int j=0;j<ans.size();j++){
if(j!=0)
cout<<"*";
cout<<ans[j];
}
cout<<endl;
}
}
11.字符串对比
问题描述
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4种情况之一:
1:两个字符串长度不等。比如 Beijing 和 Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
输入说明
包括两行,每行都是一个字符串
输出说明
仅有一个数字,表明这两个字符串的关系编号
个人总结
'a'比'A'大
11#include<bits/stdc++.h>
using namespace std;
int main(){
string s1,s2;
cin>>s1>>s2;
if(s1.size()!=s2.size()){
cout<<1<<endl;
}
else if(s1==s2){
cout<<3<<endl;
}
else{
for(int i=0;i<s1.size();i++){
if(abs(s1[i]-s2[i])!='a'-'A' && s1[i]!=s2[i]){
cout<<4<<endl;
return 0;
}
}
cout<<3;
}
}
12.时间转换
问题描述
给定一个以秒为单位的时间t,要求用“<H>:<M>:<S>”的格式来表示这个时间。<H>表示时间,<M>表示分钟,而<S>表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。
输入说明
输入只有一行,是一个整数t(0<=t<=86399)。
输出说明
输出只有一行,是以“<H>:<M>:<S>”的格式所表示的时间,不包括引号。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int h=0,m=0,s=0;
h=n/3600;
n%=3600;
m=n/60;
n%=60;
s=n;
cout<<h<<":"<<m<<":"<<s;
}
13.2n皇后问题
问题描述
给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。
问总共有多少种放法?
n小于等于8。
说明:同一条对角线是指包括两条主对角线的所有对角线,n=5时的棋盘从左上往右下有9条对角线,从右上往左下也有9条对角线。
比如,棋盘为:
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
表示一个4*4的棋盘,所有位置都可放皇后。
则可知有2种放法。
输入说明
输入的第一行为一个整数n,表示棋盘的大小。
接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个整数为0,表示对应的位置不可以放皇后。
输出说明
输出一个整数,表示总共有多少种放法。
个人总结
在main方法外部定义的vector,可以使用vector.resize(n,vector<int>(n)),在用户输入n的值后,将其定义成nxn的矩阵。
n*n矩阵放n个皇后,每行有且仅有一个,按行dfs非常合适,dfs内检查每列,在可放的情况下继续往深处递归。
#include<bits/stdc++.h>
using namespace std;
int n;
vector<vector<int>> m;
int cnt=0;
bool isValid(int x,int y,int type){
if(m[x][y]!=1)//坐标(x,y)上不可放置或者已经有棋子
return false;
for(int i=0;i<n;i++){
if(m[x][i]==type)//同一行有同色皇后
return false;
}
for(int i=0;i<n;i++){
if(m[i][y]==type)//同一列有同色皇后
return false;
}
for(int i=x,j=y;i>=0 &&j>=0;i--,j--){//检查正对角线
if(m[i][j]==type)
return false;
}
for(int i=x,j=y;i<n &&j<n;i++,j++){
if(m[i][j]==type)
return false;
}
for(int i=x,j=y;i>=0 &&j<n;i--,j++){//检查反对角线
if(m[i][j]==type)
return false;
}
for(int i=x,j=y;i<n &&j>=0;i++,j--){
if(m[i][j]==type)
return false;
}
return true;
}
void dfs(int x,int type){//x行号,type-1黑,-2白
if(x==n){//x到最后一行
if(type==-1){//黑皇后放完了,然后从0行开始放白皇后
dfs(0,-2);
}
else
cnt++;
return;
}
for(int j=0;j<n;j++){
if(isValid(x,j,type)){
int temp = m[x][j];
m[x][j]=type;
dfs(x+1,type);
m[x][j]=temp;//回溯
}
}
}
int main(){
cin>>n;
m.resize(n,vector<int>(n));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>m[i][j];
}
}
dfs(0,-1);
cout<<cnt;
}
计算机英语刘艺第五版unit2 英语翻译
分派器是内核中监测已安排的进程执行的组件。在分时/多任务系统中,该任务通过多程序完成;通过将时间划分为短的片段,称之为时间片(time slice)(一般按毫秒或微秒划分),然后当时间片轮转到被分配的进程时,cpu就将其设为处理对象。从一个进程切换到另一个进程的过程称之为“进程轮换”(或上下文轮换)。
每次分派器将一个时间片划分给某个进程时,它会创建一个计时器,用来发送一个名为“中断”的信号来标志一个时间片的结束。当cpu接收到了一个中断信号,它会结束当前的机器周期(machine cycle),在当前进程中保存断点,并执行一个名为中断控制的程序,该程序存储在主存中一个预设位置。中断控制是分派器的一部分,它会指明分派器该如何响应中断信号。
因此,中断信号的作用是中断当前进程并使cpu控制权转回到分派器。这时(at the point),分派器会从进程表中选出最高优先级的就绪进程(由调度器决定是否就绪),重启计时器,使被选择的进程开始其时间片
AI翻译对比
分派器是内核中负责监督已调度进程执行的组件。在分时/多任务系统中,此任务通过多道程序设计来实现:即将时间划分为多个短小的片段,每个片段称为一个时间片(通常以毫秒或微秒计量),然后让中央处理器的注意力在各个进程之间切换,允许每个进程执行一个时间片。从一个进程切换到另一个进程的过程称为进程切换。
每次分派器将时间片授予某个进程时,它都会启动一个定时器电路,该电路将生成一个称为中断的信号来表示该时间片的结束。当中央处理器接收到中断信号时,它会完成当前的机器周期,保存其在当前进程中的位置,然后开始执行一个称为中断处理程序的程序,该程序存储在主存储器的预定位置。此中断处理程序是分派器的一部分,它描述了分派器应如何响应中断信号。
因此,中断信号的作用是抢占当前进程,并将控制权交还给分派器。此时,分派器从进程表中选择就绪进程中优先级最高的进程(由调度器决定),重新启动定时器电路,并允许选中的进程开始其时间片。
计算机英语单词扇贝打卡

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)