北邮2018计算机院考研复试机试上机题解+结果统计
昨天刚考完,oj上题目已经看不了了,不过交的代码都还在,趁热回忆一下
整体情况:
共169人,第四题全军覆没,8人3A,77人2A,40人1A,44人0A。
最后的排行榜(id截掉了):
problem A 二进制数字翻转
输入数据组数t
每组数据输入一个十进制数x(0<x<2^32),将其二进制位反转(共32位),然后输出对应的十进制数
签到题,唯一坑点就是int表示不了2^32-1吧,用long long就行了
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[32];
int main()
{int t,n,i;ll x;cin>>t;while(t--){memset(a,0,sizeof(a));cin>>x;i=0;do{a[i++]=x%2;x/=2;}while(x);ll re=0;for(i=0;i<32;i++){re=re*2+a[i];//低位变高位,相当于反转了}cout<<re<<endl;}return 0;
}
problem B 数字填充
就是用点阵表示数字,5*3的方格表示0~9,具体见样例及代码,0是然后输入一个数字串,用点阵输出
样例输入
02
样例输出
111111
101001
101111
101100
111111
这种暴力题我一开始是拒绝的==ctrl cv大法
每行用一个string表示,用存好的点阵数字相加起来然后输出就行了
AC代码:
#include<bits/stdc++.h>
using namespace std;
struct node{string s[5];
}num[10];
int main()
{int t,i,j;num[0].s[0]="111";//先存好0-9的点阵表示num[0].s[1]="101";num[0].s[2]="101";num[0].s[3]="101";num[0].s[4]="111";num[1].s[0]="001";num[1].s[1]="001";num[1].s[2]="001";num[1].s[3]="001";num[1].s[4]="001";num[2].s[0]="111";num[2].s[1]="001";num[2].s[2]="111";num[2].s[3]="100";num[2].s[4]="111";num[3].s[0]="111";num[3].s[1]="001";num[3].s[2]="111";num[3].s[3]="001";num[3].s[4]="111";num[4].s[0]="101";num[4].s[1]="101";num[4].s[2]="111";num[4].s[3]="001";num[4].s[4]="001";num[5].s[0]="111";num[5].s[1]="100";num[5].s[2]="111";num[5].s[3]="001";num[5].s[4]="111";num[6].s[0]="111";num[6].s[1]="100";num[6].s[2]="111";num[6].s[3]="101";num[6].s[4]="111";num[7].s[0]="111";num[7].s[1]="001";num[7].s[2]="001";num[7].s[3]="001";num[7].s[4]="001";num[8].s[0]="111";num[8].s[1]="101";num[8].s[2]="111";num[8].s[3]="101";num[8].s[4]="111";num[9].s[0]="111";num[9].s[1]="101";num[9].s[2]="111";num[9].s[3]="001";num[9].s[4]="111";cin>>t;while(t--){node re;string q;cin>>q;int ql=q.length();for(i=0;i<ql;i++)//每个数的每一行加起来{for(j=0;j<5;j++){re.s[j]+=num[q[i]-'0'].s[j];}}for(i=0;i<5;i++){cout<<re.s[i]<<endl;}}return 0;
}
problem C 发财数
一个大于等于2的整数,如果可以分解为8个或8个以上的素数相乘,则称其为发财数,让你输出第n个发财数(n最大到1w)
样例输入:
1
1
样例输出:
256
额...水平比较low没想到什么好的解法,暴力解决==用cin、cout是800ms,scanf、printf应该会快得多
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define maxn 400007//最大遍历到40w 就能找到第1w多个发财数
int vis[maxn],p[maxn];
ll fa[maxn];
void init(int n)//线性筛
{int pos=0;memset(vis,0,sizeof(vis));int i,j;for(i=2;i<n;i++){if(!vis[i]) p[pos++]=i;for(j=0;j<pos&&i*p[j]<n;j++){vis[i*p[j]]=1;if(i%p[j]==0) break;}}}int main()
{init(maxn);int t,n,i,k,j,q;vector <int> v;for(k=2;k<400000;k++)//遍历到40w {if(!vis[k]) continue;//是素数则直接跳过int kt=k;int anssize=0;int ansprime[30];int ansnum[30];for(i=0;i<1000;i++)//用前1000个素数来测试{//这个40w和1000,无脑试了很多次才确定这个范围,各位大佬有什么简便方法请指教 if(kt%p[i]==0)//素数分解,可以参考王道第四章的分解素因数 {ansprime[anssize]=p[i];ansnum[anssize]=0;while(kt%p[i]==0){ansnum[anssize]++;kt/=p[i];}anssize++;if(kt==1) break;}}int su=0;for(i=0;i<anssize;i++){su+=ansnum[i];}if(su>=8)//是发财数就存起来 {v.push_back(k);}}int vs=v.size();cin>>t;while(t--){cin>>n;cout<<v[n-1]<<endl;}return 0;
}
problem D 最长平衡串
给定只含01的字符串,找出最长平衡子串的长度(平衡串:包含0和1的个数相同),串长最大十万
这个题呢,自己见识太少又想不出巧方法,只能O(n^2)暴力,可想而知TLE了
之后群里有大佬们讨论,把0换成-1然后用前缀和来做,也挺简单的吧,就怪自己太渣想不到
附两个类似题型链接
https://blog.csdn.net/became_a_wolf/article/details/48129073
http://www.bubuko.com/infodetail-2273733.html
2017蓝桥杯初赛最后一题也是前缀和:https://www.cnblogs.com/-citywall123/p/12337928.html
前三道题的运行时间:
写的代码很渣,大佬勿喷。。。本人菜鸟一个,没接触过acm,代码能力极差
总结:
对acm大佬望尘莫及五体投地!!!
北邮2018计算机院考研复试机试上机题解+结果统计相关推荐
- 北邮计算机机试的编译器,北邮2018计算机院考研复试机试上机题解+结果统计
签到题,唯一坑点就是int表示不了2^32-1吧,用long long就行了 AC代码: #includeusing namespace std; typedef long long ll; int ...
- 华师大计算机在线作业,华东师范大学计算机考研复试机试习题
华东师范大学计算机考研复试机试习题 华东师范大学计算机考研:计算机系.数据学院复试机试历年真题以及AC代码.历年学长总结得到.适用学院:计算机学院.数据学院.软件学院也可参考.sum/=10;prin ...
- 南京大学java机试,2019年南京大学计算机考研复试机试真题
目录 第一题 Stepping Numbers 题意 思路 代码 反思 第二题 Nodes from the Root 题意 思路 代码 大佬的标准题解代码: 菜鸡我的又费空间,又费时间,又臭又长,思 ...
- 北邮2019软院考研经验分享
首先自报家门,楼主本科北京一所双非,本科计科,应届考北邮软工学硕,基本上不算跨考了.初试政治一68,英语一64,数学一100,专科课115,总分347,复试机试1A, 学硕二组排名中等,还没出结果,先 ...
- 上海交大计算机考研复试,上海交大计算机考研复试机试
上海交大 计算机考研 SJTU-CS 复试机试 (2005-2010) 题目 我自己在准备考研时曾做了下06,07,08,09年的题目,并且在博客中提供了一个参考的题解,10年的题目以及11年保研的题 ...
- 华科00年计算机考研复试机试
[1]输入n, 求y1=1!+3!+...m!(m是小于等于n的最大奇数) y2=2!+4!+...p!(p是小于等于n的最大偶数) 参考代码: #include<stdio.h> int ...
- 计算机保研面试基础知识,华科计算机保研复试机试题目
华中科技大学复试机试题目 2008年 一. 1.狼过河问题(运用到回溯) 2.统计文件中单词数目 3.N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(递归) 4.链表操作 二. 第一个是 ...
- 华科计算机保研复试题目,华科计算机保研复试机试题目2.doc
华中科技大学复试机试题目 2008年 一. 1.狼过河问题(运用到回溯) 2.统计文件中单词数目 3.N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(递归) 4.链表操作 二. 第一个是 ...
- 北邮考研复试机试准备过程(已上岸)
纯自用请勿转载,用来给自己最后复习和捋思路用的,主要参考牛客网+王道机试指南,C.C++混用.考研人太久不写代码了-什么都不记得了,从头开始过一遍吧. 黑色代码段是要记住的重点函数/方法.每天下午做几 ...
最新文章
- python os system用法_Python调用系统命令os.system()和os.popen()的实现
- 什么是系统调用?为什么要用系统调用?
- 201503-4 网络延时 (本质是求树的最长路径)
- 怎么在linux操作python_pythonlinux怎么操作
- linux下elasticsearch的安装
- LG化学和三星SDI宣布关闭美国电池工厂直至4月13日
- 权限 shareuser certificat Runtime.exec
- Android NFC 标签读写读取快速开发教程 ( 整理来自 https://blog.csdn.net/wolfking0608/article/details/72675180 )
- 学习类App原型制作分享-Wokabulary
- E001检测到您的环境不支持HTML5,佳能打印机故障代码、故障原因、故障排除
- POI在Excel中导出图片(含多图)
- 解决linux中挖矿病毒
- asp.net1053-酒店宾馆客房预订管理系统#毕业设计
- Kotlin-简约之美-进阶篇(四):访问权限控制
- HDC.Cloud Day | 全国首场上海站告捷,聚开发者力量造梦、探梦、筑梦
- python爬取微信公众号文章
- 判断一个APP页面是原生的还是H5页面
- 89.网络安全渗透测试—[常规漏洞挖掘与利用篇5]—[文件包含漏洞详解实战示例]
- 焦虑的80后新中产,崩溃得不动声色,到底是新中产还是“心中惨”?
- linux查看文件是否是x86架构,Linux下查看系统架构类型的几种方法