复旦大学计算机机试

复旦大学计算机机试

笔者最近打算刷一下各大高校的机试题,暂时不详细分类(可能是夏令营,预推免,也可能是考研机试。很有可能不全)

就按照学校分类一下:

先从最简单的复旦刷起。

题目来源是一个名叫N诺的网站,大家可以上去自己玩玩。

N诺

可自行注册一个账号

在这里插入图片描述

邀请码为:noobdream

题一 :求众数

在这里插入图片描述

分析:计数类首先想到Hash表,发现没有数字的取值范围,就老老实实用map。

因为c++的map有序,遍历一次就可以找到较小的那个众数。(不要用unordered_map)

#include <bits/stdc++.h>using namespace std;int main()
{int n;cin>>n;int a[n];map<int,int> m; //默认按照a[i]的大小排序for(int i=0;i<n;i++){cin>>a[i];m[a[i]]++;}int maxcnt=0,res=0;for(auto& it:m){if(it.second>maxcnt){res=it.first;maxcnt=it.second;}}cout<<res<<endl;return 0;
}

题二:解一元一次方程

在这里插入图片描述

#include <iostream>using namespace std;int main()
{string s;cin>>s;int sumx=0; //记录x前系数和int sumd=0;//记录常数和int num=0;int flag=1; //正负号int reve=1;//等号左右边int len=s.size();for(int i=0;i<len;i++){if(isdigit(s[i])){num=10*num+s[i]-'0';}if(s[i]=='x'){if(num==0) num=1;//x前没有缺省系数sumx+=num*flag*reve;num=0;}if(s[i]=='+'){sumd+=num*flag*reve;flag=1; //正号num=0; //为下一轮系数提取清零}if(s[i]=='-'){sumd+=num*flag*reve;flag=-1;num=0;}if(s[i]=='='){sumd+=num*flag*reve;flag=1;reve=-1;num=0;}}sumd+=num*flag*reve; //字符串末尾是没有结束符的,要再累计一次if(sumx==0&&sumd==0) cout<<"infinite solutions"<<endl;else if(sumx==0) cout<<"no solution"<<endl;else cout<<"x="<<(double)-sumd/sumx<<endl; //sumx * x+sumd=0 ,x=-sumd/sumxreturn 0;
}

题三:骨牌

在这里插入图片描述

#include <iostream>using namespace std;
/*
n=1 , 1
n=2 , 2
n=3 , 3
n=4 , 5
发现规律:f(n)=f(n-1)+f(n-2)  也可以从排放形状入手
带入知道,f(6)=13
*/int main()
{int n;cin>>n;if(n<=2){cout<<n<<endl;return 0;}int pre2=1;int pre1=2;int ans;for(int i=3;i<=n;i++){ans=(pre1+pre2)%999983;pre2=pre1;pre1=ans;}cout<<ans<<endl;return 0;
}

题四:集合交并

在这里插入图片描述

#include <bits/stdc++.h>using namespace std;int main()
{int n,m;cin>>n>>m;int a[n],b[m];set<int> s1;for(int i=0;i<n;i++){cin>>a[i];s1.insert(a[i]);}set<int> s2,s3(s1);for(int i=0;i<m;i++){cin>>b[i];if(s1.count(b[i])){ //s2用来存交集s2.insert(b[i]);}else{s3.insert(b[i]);//s3用来存并集}}cout<<s2.size()<<" "<<s3.size()<<endl;return 0;
}

题五:约数求和

在这里插入图片描述

#include <iostream>using namespace std;
/*
1 : 1
2 : 1 2
3 : 1 3
4 : 1 2 4
5 : 1 5
6 : 1 2 3 6
7 : 1 7
通过以上规律发现:1出现7/1次,2出现7/2次,3出现7/3次
i 出现 n/i次
*/int main()
{int n;cin>>n;long long ans=0;for(int i=1;i<=n;i++){ans+=(i)*(n/i);  }cout<<ans<<endl;return 0;
}

题六:求交点

在这里插入图片描述

#include <bits/stdc++.h>using namespace std;
/*
y=(x-x1)*(y2-y1)/(x2-x1)+y1
y=(x-x3)*(y4-y3)/(x4-x3)+y3解方程即可,但是注意,用乘积,少用除,防止出现除0. k1,k3不要算出来,展开了做
*/
int main()
{int x1,y1,x2,y2;int x3,y3,x4,y4;cin>>x1>>y1>>x2>>y2;cin>>x3>>y3>>x4>>y4;int a0=(y2-y1)*(x4-x3)-(y4-y3)*(x2-x1);if(a0==0){cout<<"Parallel or coincident"<<endl;}else{int a1=(x4-x3)*(y2-y1)*x1;int a2=(x2-x1)*(y4-y3)*x3;int a3=(x4-x3)*(x2-x1)*(y3-y1);double x=(double)(a1-a2+a3)/a0;double y=(x-x1)*(y2-y1)/(x2-x1)+y1;printf("%.2f %.2f",x,y);}return 0;
}

题七:长方形中的正方形

在这里插入图片描述

#include <iostream>using namespace std;/*
刚开始一看,有点儿像辗转相除的味道。
用递归写就好
递归函数recur(n,m)表示求的长方形长为n,宽为m的正方形个数
recur(n,m)=
1, n==m 
1+recur(n-m,m),n>m
1+recur(n,m-n),n<m递归三步走:
1.确定递归函数的意义
2.确定递归的方程
3.确定递归的初始条件*/
int recur(int n,int m){if(n==m) return 1;else{if(n<m) return 1+recur(n,m-n);else return 1+recur(m,n-m);}}int main()
{int n,m;cin>>n>>m;cout<<recur(n,m)<<endl;return 0;
}

题八:a与b得到c

在这里插入图片描述

#include <bits/stdc++.h>using namespace std;
/*
送分不解释,如果是经过有限次四则运算,就变成了dfs的题了
*/
int main()
{int a,b,c;cin>>a>>b>>c;set<double> s;s.insert(a+b);s.insert(a-b);s.insert(b-a);s.insert(a*b);s.insert((double)a/b);s.insert((double)b/a);if(s.count(c)) cout<<"YES"<<endl;else cout<<"NO"<<endl;return 0;
}

题九:相隔天数

在这里插入图片描述

#include <bits/stdc++.h>using namespace std;
/*
日期类问题,常规模拟,注意相隔多少天,要取绝对值。
这里没说错误提示,我就没有对日期进行错误判断了。
*/
bool isLeapYear(int year){return (year%4==0&&year%100!=0)||year%400==0;
}int month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int fromDays(int year,int month,int day){  //自1970:01:01int days=0;for(int i=1970;i<year;i++){if(isLeapYear(i)) days+=366;else days+=365;}for(int i=1;i<month;i++){days+=month_day[i];}if(isLeapYear(year)&&month>2) days++;days+=day;return days;
}int main()
{string s;cin>>s;int len=s.size();int year=0;int month=0;int day=0;for(int i=0;i<len;i++){if(i<4){year=10*year+s[i]-'0';}else if(i<6){month=10*month+s[i]-'0';}else{day=10*day+s[i]-'0';}}cout<<abs(fromDays(year,month,day)-fromDays(2019,2,5))<<endl;return 0;
}

题十:最大连续子序列

在这里插入图片描述

#include <bits/stdc++.h>
/*
非常简单的一个dp,
dp[i]表示以a[i]结尾的最大连续子序列
dp[i]=
dp[i-1]+a[i],dp[i-1]>0
a[i] ,dp[i-1]<=0最终答案res=max(res,dp[i])所有dp[i]的最大值
因为dp[i]只与dp[i-1]有关,于是可以压缩数组,为一个cur变量即可
*/
using namespace std;int main()
{int n;cin>>n;int a[n];int cur=0;int res=INT_MIN;for(int i=0;i<n;i++){cin>>a[i];cur=cur>0?cur+a[i]:a[i];res=max(cur,res);}cout<<res<<endl;return 0;
}

题十一:有向树形态

在这里插入图片描述

#include <iostream>using namespace std;/*
n=0, f(0)=1;
n=1 ,f(1)=1
n=2, f(2)=2
n=3, f(3)=f(2)+f(1)*f(1)+f(2)卡特兰数
f(n)=f(n-1)f(0)+f(n-2)f(1)+ ...+f(1)f(n-2)+f(0)f(n-1)f(n)=(2n)!/((n)!*(n+1)!)
*/long long f[21];int main()
{int n;cin>>n;f[0]=1;f[1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=i;j++){f[i]+=f[i-j]*f[j-1];}}cout<<f[n]<<endl;return 0;
}

2020夏令营机试(图片来源网上)

img

题一:拓扑排序模板

/*
测试用例:
4
1 0
2 0
3 1
3 2
-1 -1//结束标志
*/#include <bits/stdc++.h>using namespace std;vector<int> topo(int n,vector<vector<int>>& prerequist){vector<int> res;vector<int> indegrees(n);  //入度表vector<vector<int>> adj(n); //邻接表queue<int> zero;//度数为0的队列for(vector<int> tmp:prerequist){indegrees[tmp[0]]++;adj[tmp[1]].push_back(tmp[0]);}for(int i=0;i<n;i++){if(indegrees[i]==0) zero.push(i);}while(!zero.empty()){int tmp=zero.front();zero.pop();res.push_back(tmp);for(int j=0;j<adj[tmp].size();j++){if(--indegrees[adj[tmp][j]]==0) zero.push(adj[tmp][j]);}}return res.size()==n?res:vector<int>{};return res;
}int main()
{int n;cin>>n;  //输入没有进行太多处理,不是重点vector<vector<int>> prerequist;int x,y;while(cin>>x>>y) {vector<int> tmp;tmp.push_back(x);tmp.push_back(y);prerequist.push_back(tmp);if(x==-1){prerequist.pop_back();break;}}vector<int> res=topo(n,prerequist);for(int tmp:res){cout<<tmp<<" ";}cout<<endl;return 0;
}

题二:动规,等有时间再更新

备注:复旦这边题可以说,比较基础,大一的c语言学好都能做,有一些基础的数学找规律题。

可能是文理学校的缘故。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50120.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复旦大学研究生机试(2019)

1. 计算机学院 今年的题目可以说是挺难的&#xff0c;第一题虽然像是送分题&#xff0c;实际上也不是很简单。第二题第三题是动态规划问题&#xff0c;而且复旦据说会卡大数&#xff0c;今年150人考生据说只有一个AC&#xff0c;大部分人只做出第一题&#xff0c;个别零分。 …

【保研夏令营经验贴】2021复旦大学计算机科学技术学院

本人基本情况如下 学校&#xff1a;211 专业&#xff1a;计算机科学与技术 成绩排名&#xff1a;3/137 英语水平&#xff1a;四六级飘过 在校期间参加过一项省级创新创业项目&#xff0c;和区块链有关&#xff0c;同时也参加过数学竞赛、英语竞赛、数学建模&#xff0c;在…

复旦大学2021年计算机学院机试题解

写在前面&#xff1a;本文所收录真题解答都是本人自己所写&#xff0c;由于本人水平所限&#xff0c;部分题解可能存在错误&#xff0c;如存在错误&#xff0c;望各位指出。 更新&#xff1a;CSDN不会再更新&#xff0c;移步Pykt的博客 2021年真题 第一题 题目描述&#xff…

复旦大学2021机试

2021年真题 第一题 题目描述&#xff1a;给定一颗二叉树&#xff0c;树的每个节点的值为一个正整数。如果从根节点到节点 N 的路径上不存在比节点 N 的值大的节点&#xff0c;那么节点 N 被认为是树上的关键节点。求树上所有的关键节点的个数。请写出程序&#xff0c;并解释解…

复旦大学,计算机考研情况

复旦大学是位于上海的一所985大学&#xff0c;计算机学科评估B&#xff0c;软件工程学科评估B&#xff0c;在985大学中处于中游水平。但由于学校整体实力很强&#xff0c;名气也大&#xff0c;因此深受考生的欢迎。 复旦大学2021考研招生目录 计算机科学技术学院 081201&#x…

新版悬赏猫任务平台系统源码+已经去授权

正文: 完整标题: 悬赏猫任务平台去授权版&#xff0c;用户自主发布任务接免签支付&#xff0c;信用分评分机制网站源码可打包app 这个是带有用户发布任务功能的&#xff0c;还有信用分评分什么的&#xff0c;挺全面&#xff0c;具体的大家搭建出来看一下就知道。 程序: ww…

最新交易猫 闲鱼源码 带后台管理+个人码收款

带一款非常简洁好看的后台。 搭建教程&#xff1a;修改数据库账号密码直接使用。 源码码下载&#xff1a; 网盘下载地址&#xff1a;https://pan.baidu.com/s/19iOsoyK-J-Rhi2dZYqzMMg?pwdiumr 提取码:iumr

10款自媒体人必备的免费工具,快速高效运营

1、GIISO写作机器人 此款工具的slogan就是&#xff1a;AI校对&#xff0c;比人更会! 这款工具包含&#xff1a;文章校对、提纲写作、营销写作、汽车写作等功能! 比较受欢迎的是它的营销写作功能和提纲写作功能&#xff0c;营销写作功能可以一键生成营销软文。 而提纲写作功能…

这四款软件有多好用你不会还不知道吧

第一款&#xff1a;秘塔写作猫 秘塔写作猫是一款非常不错的写作软件。基于人工智能&#xff0c;可智能识别错别字、语义、标点符号、词序和语法问题。对于效率君来说&#xff0c;长期写作可以用它来检查&#xff0c;节省大量检查时间。它不仅可以改写&#xff0c;还可以翻译内…

交易猫源码完整搭建教程

源码仅供学习参考。 教程&#xff1a;修改数据库账号密码 源码下载&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

【018】秘塔写作喵-中英文文章自动审阅纠错

10月19日发布的每日网站指南007“微软Aim Writing-智能英文写作平台”&#xff0c;有读者反馈只能针对英文进行审阅&#xff0c;那今天ONETer就为大家介绍一个可以中英文文章自动审阅纠错的网站&#xff1a;秘塔写作喵 地址&#xff1a;参见文末图 写作喵网站需要注册后使用&a…

编程猫创作工具:新版Kitten新体验

在少儿编程图形化工具方面&#xff0c;Scratch是老牌的创作工具&#xff0c;最为流行&#xff0c;用的人也最多。但是Scratch界面不友好、本地化功能欠缺、网络访问慢等问题也日渐显著。编程猫自主研发的图形化编程创作工具&#xff1a;源码编辑器应运而生。Kitten以更丰富的素…

【编程题】【Scratch三级】2019.06 猫咪抓老鼠游戏

猫咪抓老鼠游戏 1. 准备工作 &#xff08;1&#xff09;保留小猫角色&#xff0c;添加“Mouse1”&#xff1b; &#xff08;2&#xff09;默认白色背景。 2. 功能实现 &#xff08;1&#xff09;键盘上下左右键控制小猫上下左右移动&#xff1b; &#xff08;2&#xff09…

AI智能润色改写,伪原创写作工具,毕业论文必备工具

小伙伴们注意&#xff1a;公众号的推送机制不再按照时间前后推送了&#xff0c;微信公众号信息流乱序。君哥建议大家把科技毒瘤君公众号置顶&#xff08;设为星标⭐&#xff09;&#xff0c;以便第一时间看到推送&#xff0c;非常感谢~&#xff0c;方法如下图&#xff1a; 推荐…

你不能错过的文章撰写软件

关注“心仪脑”查看更多脑科学知识的分享。 关键词&#xff1a;资源推荐、写文软件 抛开我们常用的WPS和OFFICE不说&#xff0c;现在的写作工具是越来越人性化了&#xff0c;就差实现人工智能。当我们辛辛苦苦做完实验&#xff0c;终于轮到我们报告的时候&#xff0c;却发现我…

怎么用秘塔写作猫写小红书种草文案?

在一些自媒体平台发布一些产品时&#xff0c;为吸引更多人的眼球&#xff0c;很多自媒体发声者会费尽心思写一些种草文案&#xff0c;但是自己绞尽脑汁写的种草文案&#xff0c;却没有取得较好的效果&#xff0c;反而借助一些AI工具帮助大家写的种草文案&#xff0c;更广泛地被…

怎么用秘塔写作猫写短视频文案?

短视频文案通常需要在短短的几秒钟传递一些比较重要的信息和情感&#xff0c;让关注更好的了解视频的主题和内容&#xff0c;写一份好的短视频文案可以吸引较多观众的注意力&#xff0c;能够让他们更好的理解视频内容&#xff0c;同时在观看视频时还可以给大家留下比较深刻的印…

「转」好用的写作辅助工具 - 秘塔写作猫

关注我很久的读者&#xff0c;应该都知道&#xff0c;我特别喜欢写作&#xff0c;每天不写点东西心里总是痒痒的。而且我写公众号文章有时候经常会有错别字&#xff0c;细心的读者能够帮我指正&#xff0c;其实挺感谢大家的指正的。 不知道大家发现了没有&#xff0c;我最近写…

秘塔写作猫(网页端)

首先&#xff0c;秘塔写作猫是利用智能AI写作功能帮大家完成各种写作&#xff0c;集AI写作&#xff0c;多人协作&#xff0c;文本校对&#xff0c;改写润色&#xff0c;自动配图等功能为一体AI Native的内容创作平台&#xff0c;这绝对是一个写作神器。 最开始不会使用的小伙伴…

秘塔写作猫

秘塔写作猫是集AI智能写作、多人协作、改写润色、文本校对等功能为一体的AI原生创作平台&#xff0c;可以帮助不同群体大幅提升写作效率和生产力。 接下来小编就带大家了解一下该软件具体的一些功能&#xff0c;不论你是学生、上班族还是自媒体从业者等&#xff0c;该工具绝对可…