本文主要是介绍北邮2017年计算机机试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ProblemA 求special数
题目描述(非完整版)
代码
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
int main(){int T;scanf("%d",&T);while(T--){int n;scanf("%d",&n);int ans=0;for(int i=1;i*i*i<=n;i++){int tp=i*i*i;int ts=(int)sqrt(tp);if(ts*ts==tp){ans++;}}printf("%d\n",ans);}return 0;
}
ProblemB 字符串操作
题目描述(非完整版)
代码
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
const int MAXV=1000;
int n,m;
int a[MAXV];
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",a+i);}while(m--){int t,l,r;scanf("%d%d%d",&t,&l,&r);if(t==1){for(int i=l,j=r;i<j;i++,j--){swap(a[i],a[j]);}}else if(t==2){int len;scanf("%d",&len);for(int i=0;i<len;i++){swap(a[l+i],a[r+i]);}}else if(t==3){int x;scanf("%d",&x);for(int i=l;i<=r;i++){a[i]=x;}}else if(t==4){sort(a+l,a+r+1);}else if(t==5){int ans=0;for(int i=l;i<=r;i++){ans+=a[i];}printf("%d\n",ans);}}return 0;
}
/*9 8
1 2 3 4 5 6 7 8 9
1 4 8
5 7 9
2 2 5 3
5 5 9
3 5 8 3
4 3 8
5 7 9
5 1 9*/
ProblemC 二叉树
题目描述 (非完整版)
代码
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
struct TreeNode{TreeNode* lc;TreeNode* rc;char data;TreeNode(char c){data=c;lc=NULL;rc=NULL;}
};
TreeNode* getTree(string pr,string in){if(pr.length()==0) return NULL;char rc=pr[0];int len=pr.length();TreeNode* root=new TreeNode(rc);int index=in.find(rc);string lin=in.substr(0,index);string rin=in.substr(index+1);string lpr=pr.substr(1,lin.length());string rpr=pr.substr(1+lin.length());root->lc=getTree(lpr,lin);root->rc=getTree(rpr,rin);return root;
}
void postOrder(TreeNode* root){if(root==NULL) return;postOrder(root->lc);postOrder(root->rc);printf("%c",root->data);
}
int main(){char buf1[100],buf2[100];scanf("%s%s",buf1,buf2);string pr(buf1);string in(buf2);TreeNode* root=getTree(pr,in);postOrder(root);return 0;
}
ProblemD
我只有这样一份题,我没看懂那个样例里哪有s和8,可能是我瞎吧,我找资源能力也差,没有从网上找到完整的题目,也没有评测系统,这题放弃了。
注:上面的题只是通过了自己的一些测试数据,没有oj来评测不敢保证完全正确,可参考思路,有错误欢迎指出。
这篇关于北邮2017年计算机机试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!