浙大计算机复试上机成绩,浙大计算机研究生复试上机考试-2006年
发指啊... 第一次快写完了结果傲游挂了... ...直接全部重来啊... ...OMG
这套比2005年的稍难, 不过基本都是小模拟啦, 对ACM菜鸟来说都是大水题~~
1. 还是A+B
注意题目第三个case, 8的前面全当成0, 所以108和8的前两位看作相同的
我的方法很WS, 因为题目说不超过8位, 就先把不足8位的数字串补足8位, 高位全填0, 然后从后面开始比较k位就ok了~
//浙大计算机研究生复试上机考试-2006年 还是A+B#include#include#include
intk, s1, s2, l1, l2;
chara[10], b[10];
intcal(char*s){
inti, t=0;
for(i=0; s[i];++i) t=t*10+s[i]-'0';
returnt;
}
intmain(){
inti;
while(1){
scanf("%s %s %d", a, b,&k);
if(!strcmp(a,"0")&&!strcmp(b,"0"))break;
l1=strlen(a); l2=strlen(b);
for(i=7; i>7-l1;--i) a[i]=a[l1+i-8];
for(i=0; i<=7-l1;++i) a[i]='0';
for(i=7; i>7-l2;--i) b[i]=b[l2+i-8];
for(i=0; i<=7-l2;++i) b[i]='0';
if(!strncmp(a+8-k,b+8-k, k)){
puts("-1");
continue;
} s1=cal(a); s2=cal(b);
printf("%d\n", s1+s2);
}return0;
}
2. 火星A+B
一开始理解错题意了, 不过应该不会有人跟我有一样NC的理解吧... = = ...就不说了
有点像高精度加法, 一位位加就好了, 注意进制, 先打出100以内的质数表(保险起见多打了两个)
开始一处初始化忘了, WA三次才发现... ...
PS: Discuss惊现ECUST-SJTU---ssjia大牛, 各种Orz
2011.09.17 PS: 这题九度上死活过不了啊... 求交流
//浙大计算机研究生复试上机考试-2006年 火星A+B#include#include#include#include#includeusingnamespacestd;
intbas[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103};
inta[30], b[30], c[30], l1, l2;
chars1[300], s2[300];
intmain(){
inti, tn1, tn2, tp;
while(1){
scanf("%s %s", s1, s2);
if(!strcmp(s1,"0")&&!strcmp(s2,"0"))break;
l1=strlen(s1);
l2=strlen(s2);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
tn1=tn2=0; tp=1;
for(i=l1-1; i>=0;--i){
if(s1[i]==','){
tn1++;
tp=1;
}
elseif(isdigit(s1[i])){
a[tn1]=a[tn1]+tp*(s1[i]-'0');
tp*=10;
} } tp=1;
for(i=l2-1; i>=0;--i){
if(s2[i]==','){
tn2++;
tp=1;
}
elseif(isdigit(s2[i])){
b[tn2]=b[tn2]+tp*(s2[i]-'0');
tp*=10;
} }intcf=0;
for(i=0; i<=min(tn1, tn2);++i){
c[i]=cf+a[i]+b[i];
if(c[i]>=bas[i]){
cf=c[i]/bas[i];
c[i]%=bas[i];
}else cf=0;
}
for(;i<=max(tn1, tn2);++i){
if(i<=tn1){
c[i]=cf+a[i];
if(c[i]>=bas[i]){
cf=c[i]/bas[i];
c[i]%=bas[i];
}else cf=0;
}
elseif(i<=tn2){
c[i]=cf+b[i];
if(c[i]>=bas[i]){
cf=c[i]/bas[i];
c[i]%=bas[i];
}else cf=0;
} } c[i]+=cf;
if(c[i]>=bas[i]){
cf=c[i]/bas[i];
c[i]%=bas[i];
}else cf=0;
if(cf) c[++i]=cf;
while(c[i]==0&&i>0)--i;
for(; i>0;--i) printf("%d,", c[i]);
printf("%d\n", c[0]);
}return0;
}
3. 还是畅通工程
模板题, 不解释
//浙大计算机研究生复试上机考试-2006年 还是畅通工程#include#include#include#defineN 110#defineINF 0x3f3f3f3f
intn, adj[N][N], lowcost[N], closest[N];
voidprim(intc[][N]){
bools[N];
s[1]=true;
for(inti=2; i<=n;++i){
lowcost[i]=c[1][i];
closest[i]=1;
s[i]=false;
}
for(inti=1; i{
intmix=INF, j=1;
for(intk=2; k<=n;++k)
if(lowcost[k]{
mix=lowcost[k];
j=k;
} s[j]=true;
for(intk=2; k<=n;++k)
if(c[j][k]{
lowcost[k]=c[j][k];
closest[k]=j;
} }}
intmain(){
inti, j, ans, a, b, c;
while(scanf("%d",&n), n){
for(i=1; i<=n*(n-1)/2;++i){
scanf("%d %d %d",&a,&b,&c);
adj[a][b]=adj[b][a]=c;
} prim(adj);
ans=0;
for(i=1; i<=n;++i) ans+=lowcost[i];
printf("%d\n", ans);
}return0;
}
4. 统计同成绩学生人数
大水题, 不解释
//浙大计算机研究生复试上机考试-2006年 统计同成绩学生人数#include#include#include#defineN 1010
inta[N], n, ans;
intmain(){
intx, i;
while(scanf("%d",&n), n){
for(i=0; i
scanf("%d",&x);
ans=0;
for(i=0; i
if(a[i]==x) ans++;
printf("%d\n", ans);
}return0;
}
5. 简单计算器
我的方法比较麻烦... ...设置两个栈(偷懒用了STL, 慢就慢吧...||), 一个符号栈, 一个操作数栈
当读进操作数时, 若符号栈栈顶为*或/, 就马上计算掉, 弹出操作数栈栈顶连续两个元素和符号栈栈顶, 算好之后结果压进操作数栈, 这里注意下运算顺序, '-','/'都是有计算顺序要求的
当读到运算符时, 什么都不管, 直接压进符号栈
最后把操作数栈和符号栈元素全部倒置(稍微想想就知道为什么了, 一开始这里没想清楚, 单步了好一会儿才发现... ...), 然后不断弹出符号栈栈顶符号和操作数栈顶连续两个操作数, 计算完后结果压入操作数栈, 直至符号栈为空.
//浙大计算机研究生复试上机考试-2006年 简单计算器#include#include#include#include#includeusingnamespacestd;
doublecal(doublea,doubleb,charc){
if(c=='+')returna+b;
if(c=='-')returna-b;
if(c=='*')returna*b;
if(c=='/')returna/b;
}
intmain(){
inti;
charop[210];
while(gets(op), strcmp(op,"0")!=0){
i=0;
stackopa;
stackopr;
while(op[i]){
if(isdigit(op[i])){
doubletp=0.0;
while(isdigit(op[i])){
tp=tp*10+op[i]-'0';
++i;
} opa.push(tp);
if(!opr.empty()&&opr.top()=='*'){
opr.pop();
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'*'));
}
elseif(!opr.empty()&&opr.top()=='/'){
opr.pop();
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'/'));
} }
elseif(op[i]=='+'){
opr.push('+');
++i;
}
elseif(op[i]=='-'){
opr.push('-');
++i;
}
elseif(op[i]=='*'){
opr.push('*');
++i;
}
elseif(op[i]=='/'){
opr.push('/');
++i;
}else++i;
} stackopr1;
stackopa1;
while(!opr.empty()){
opr1.push(opr.top());
opr.pop();
}
while(!opa.empty()){
opa1.push(opa.top());
opa.pop();
}
while(!opr1.empty()){
doublet1=opa1.top(); opa1.pop();
doublet2=opa1.top(); opa1.pop();
opa1.push(cal(t1, t2, opr1.top()));
opr1.pop();
} printf("%.2lf\n", opa1.top());
}return0;
}
2011.09.10 PS: 这题又用了另一种方法做
遇到数字的时候不处理, 直接压入操作数栈, 遇到'*'或'/'时, 操作符栈顶连续的'*'或'/'都计算掉, 再将自己压入操作符栈, 遇到'+'或'-'时, 操作符栈里的都能计算掉, 计算完后再将自己压入操作符栈, 最后将操作符栈从栈顶依次处理即可, 因为此时不会出现多个'+''-', '*''/'相连导致运算顺序错误的情况
本来以为这样很方便, 结果代码比原来长了快一倍... (因为写得挫... )
其实像书上那样加入结束字符再处理的话代码应该会短一些... 有空再敲一次
//2006年浙江大学计算机及软件工程研究生机试题 简单计算器#include#include#include#include#includeusingnamespacestd;
doublecal(doublea,doubleb,charc){
if(c=='+')returna+b;
if(c=='-')returna-b;
if(c=='*')returna*b;
if(c=='/')returna/b;
}
intmain(){
inti;
charop[220];
while(gets(op), strcmp(op,"0")){
i=0;
stackopa;
stackopr;
while(op[i]){
if(isdigit(op[i])){
doubletp=0.0;
while(isdigit(op[i])){
tp=tp*10+op[i]-'0';
++i;
} opa.push(tp);
}
elseif(op[i]=='+'){
if(opr.empty()) opr.push('+');
else{
while(!opr.empty()){
if(opr.top()=='+'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opr.pop();
opa.push(cal(t2, t1,'+'));
}
elseif(opr.top()=='-'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'-'));
opr.pop();
}
elseif(opr.top()=='*'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'*'));
opr.pop();
}
elseif(opr.top()=='/'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'/'));
opr.pop();
} } opr.push('+');
}++i;
}
elseif(op[i]=='-'){
if(opr.empty()) opr.push('-');
else{
while(!opr.empty()){
if(opr.top()=='-'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'-'));
opr.pop();
}
elseif(opr.top()=='+'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'+'));
opr.pop();
}
elseif(opr.top()=='*'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'*'));
opr.pop();
}
elseif(opr.top()=='/'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'/'));
opr.pop();
} } opr.push('-');
}++i;
}
elseif(op[i]=='*'){
if(opr.empty()) opr.push('*');
else{
while(!opr.empty()){
if(opr.top()=='*'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'*'));
opr.pop();
}
elseif(opr.top()=='/'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'/'));
opr.pop();
}elsebreak;
} opr.push('*');
}++i;
}
elseif(op[i]=='/'){
if(opr.empty()) opr.push('/');
else{
while(!opr.empty()){
if(opr.top()=='/'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'/'));
opr.pop();
}
elseif(opr.top()=='*'){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1,'*'));
opr.pop();
}elsebreak;
} opr.push('/');
}++i;
}else++i;
}
while(!opr.empty()){
doublet1=opa.top(); opa.pop();
doublet2=opa.top(); opa.pop();
opa.push(cal(t2, t1, opr.top()));
opr.pop();
} printf("%.2lf\n", opa.top());
}return0;
}
浙大计算机复试上机成绩,浙大计算机研究生复试上机考试-2006年相关推荐
- 2020南京大学计算机复试细则,计算机学院2020年全国硕士研究生复试实施细则
为做好硕士研究生的复试录取工作,根据<沈阳航空航天大学2020年全国硕士研究生复试工作方案>规定要求,并结合我院实际制定本细则. 一.复试工作的组织 计算机学院研究生招生复试工作小组全面负 ...
- 武汉大学计算机学院2019考研复试,2019年武汉大学硕士研究生复试及录取名单汇总...
原标题:2019年武汉大学硕士研究生复试及录取名单汇总 考生可以通过录取名单了解到很多重要的信息,例如复试比例,进复试最低分,复试录取成绩,录取总评成绩等重要信息.以下是我们整理收集到的各学院复试录取 ...
- 华北计算机系统工程研究所录取名单,2018年华北计算机系统工程研究所接收推免研究生复试录取通知...
根据华北计算机系统工程研究所2018年推荐免试研究生工作的安排,推免生复试工作将在10月中旬进行,现将有关事宜安排通知如下: 一.华北计算机系统工程研究所研究生招生工作领导小组全面负责推免生复试录取工 ...
- 天津科技大学计算机学院复试分数线,2021天津科技大学研究生复试分数线
2021天津科技大学研究生复试分数线已经公布,包含学术学位.专业学位.专项计划复试分数线,供大家参考,如意了在此祝广大考研学子都能顺利上岸. 一.2021年天津科技大学研究生分数线 1.专业分数线 各 ...
- 2021电子科大计算机复试线,2021电子科技大学研究生复试分数线
2021电子科技大学研究生复试分数线已经公布,包含学术学位.专业学位.强军计划.退役大学生士兵专项计划.少数民族高层次骨干人才计划等复试分数线,供大家参考,如意了在此祝广大考研学子都能顺利上岸. 一. ...
- 清华2021计算机学院复试,清华大学2021年硕士研究生复试名单汇总(持续更新中)...
清华大学2021年硕士研究生复试名单汇总已出来,下面金程考研小编整理了:清华大学2021年硕士研究生复试名单汇总 (持续更新中),希望对同学有帮助~ 加小助手微信(备注网校)jckyyxm领取历年考研 ...
- 2019年南京大学计算机研究生复试分数线,2019年南京大学研究生复试分数线
2019年南京大学研究生复试分数线 附件:南京大学年硕士研究生复试基本分数线报考学科门类(专业学位类别)总分第报考学科门类(专业学位类别)总分第门第门第门第门第门第门第门哲学[]经济学[]法学[]教育 ...
- 江苏大学2020计算机考研,江苏大学2020年硕士研究生复试时间及主要安排
根据<江苏大学2020年硕士研究生招生复试及录取办法>(江大研[2020]3号),为做好我校2020年硕士研究生复试及录取工作,现将有关工作安排通知如下: 一.复试人选 符合我校复试分数线 ...
- 综合模拟试题计算机指南,2018年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合历年真题及模拟试题详解...
2018年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业基础综合历年真题及模拟试题详解本站小编 辅仁网/2017-06-21 下载地址:http://free.100xuexi.co ...
最新文章
- Spring框架中的设计模式(二)
- 【转】OGRE资源相关分析
- zabbix企业应用之监控mysql 5.6版本
- 用python中django创建网页终端直接关闭是什么问题_如何用Python Django创建网站?系列文章03(持续更新...)...
- Laravel开发:Laravel核心——Ioc服务容器源码解析(服务器绑定)
- C++随机数(rand和srand)函数用法详解
- 优衣库试衣间又出事了!惊现针孔摄像头 回应:正全力配合警方调查
- 用aspnetpager实现datalist分页
- 从氨基酸到大分子(蛋白质、核酸)
- 数据结构上机实践第八周项目8-稀疏矩阵的三元组表示的实现及应用
- k-近邻算法 ---sklearn
- 使用Mac的十大最好用神器
- 菜鸟电子面单获取教程
- ios 出现log不打印 was compiled with optimization - stepping may behave oddly; variables may not be availa
- 拆解:比银行卡面积还小的充电宝,怎么做到10000mAh?
- GBase xdm产品特点
- 2.5 亿!华为成立新公司
- 微服务架构设计基础-(2):微服务架构的特性
- centos安装jq工具
- 海康设备注册一直失败的问题