南邮ACM算法与数据结构设计(2010-2011-2实验三简评)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验(作业) 实验(作业)三简评
D、五位以内的对称素数
来源: 来源: 第1187题 题 题目描述:判断一个数是否为对称且不大于五位数的素数。 题目描述:判断一个数是否为对称且不大于五位数的素数。 输入描述:输入数据含有不多于50个的正整数 个的正整数(0<n<232)。 输入描述:输入数据含有不多于 个的正整数 。 输出描述:对于每个n,如果该数是不大于五位数的对称素数, 输出描述:对于每个 ,如果该数是不大于五位数的对称素数,则输出 “Yes”,否则输出“No”。每个判断结果单独列一行。 ,否则输出“ 。每个判断结果单独列一行。 输入样例
实验(作业) 实验(作业)三简评
C、完数
来源: 来源: 第1190题 题 题目描述:自然数中,完数寥若晨星,请在从 到某个整数范围中打印出 题目描述:自然数中,完数寥若晨星,请在从1到某个整数范围中打印出 所有的完数来。所谓“完数”是指一个数恰好等于它的所有不同因子之和。 所有的完数来。所谓“完数”是指一个数恰好等于它的所有不同因子之和。 例如, 是完数 因为6=1+2+3。而24不是完数,因为 是完数, 不是完数, 例如,6是完数,因为 。 不是完数 因为24≠1+2+3+4+6+8+12 =36。 。 输入描述:输入数据中含有一些整数 ( < < 输入描述:输入数据中含有一些整数n(1<n<10000)。 )。 输出描述:对于每个整数 ,输出所有不大于n的完数 每个整数n的输出 的完数。 输出描述:对于每个整数n,输出所有不大于 的完数。每个整数 的输出 引导, 由n引导,跟上冒号,然后是由空格开道的一个个完数,每个 的完数列表 引导 跟上冒号,然后是由空格开道的一个个完数,每个n的完数列表 应占独立的一行。 应占独立的一行。 输入样例
11 101 272
输出样例
Yes Yes No
实验(作业) 实验(作业)三简评
D、五位以内的对称素数
Accepted Code
//#include "stdafx.h" #include <fstream> #include <iostream> using namespace std; bool isPrime(int n) { if(n==1) return false; if(n!=2&&n%2==0) return false; for(int i=3;i*i<=n;i=i+2) { if(n%i==0) return false; } return true; } bool isSym(int n) { if(n<12&&n!=10) return true; if(n>100&&n<1000&&n/100==n%10) return true; if(n>10000&&n/1000==n%10*10+n/10%10) return true; return false; } int main(int argc, char* argv[]) { ifstream cin("aaa.txt"); int n; while (cin>>n){ cout<<(n<100000&&isSym(n)&&isPrime(n)?"Yes\n":"No\n"); } return 0; }
实验(作业) 实验(作业)三简评
B、 01串排序
来源: 来源: 第1204题 题 题目描述: 串首先按长度排序, 题目描述:将01串首先按长度排序,长度相同时,按1的个数多少进行排 串首先按长度排序 长度相同时, 的个数多少进行排 的个数相同时再按ASCII码值排序。 码值排序。 序,1的个数相同时再按 的个数相同时再按 码值排序 输入描述:输入数据中含有一些01串 串的长度不大于256个字符 输入描述:输入数据中含有一些 串,01串的长度不大于 个字符。 串的长度不大于 个字符。 输出描述:重新排列01串的顺序 使得串按基本描述的方式排序。 串的顺序。 输出描述:重新排列 串的顺序。使得串按基本描述的方式排序。 字符串排序
#include<iostream> #include<algorithm> #include<string> using namespace std; int cmp(string a,string b) { int aa=0,bb=0,i; for(i=0;i<a.length();i++){ if(a[i]=='A') aa++; } for(i=0;i<b.length();i++){ if(b[i]=='A') bb++; } if(aa<bb) return 1; else return 0; }
10011111 00001101 1010101 1 0 1100
输出样例
0 1 1100 1010101 00001101 10011111
实验(作业) 实验(作业)三简评
B、 01串排序
Accepted Code
//#include "stdafx.h“ #include <fstream> #include <iostream> #include <string> #include <set> #include <algorithm> using namespace std; struct Comp{ bool operator()(const string &s1,const string &s2) { if(s1.length()!=s2.length()) return s1.length() < s2.length(); int c1=count(s1.begin(),s1.end(),'1'); int c2=count(s2.begin(),s2.end(),'1'); return (c1!=c2?c1<c2:s1<s2); } }; int main(int argc, char* argv[]) { ifstream cin("aaa.txt"); multiset<string,Comp> ms; string s; while(cin>>s) { ms.insert(s); } for(multiset<string,Comp>::iterator it=ms.begin();it!=ms.end();it++) { cout<<*it<<endl; } return 0; }
实验(作业) 实验(作业)三简评
E、社会关系网络—并查集
for(i = 0; i < m; i++){ int num,a,b; scanf("%d %d",&num,&a); for(t=0;t<num-1;t++){ scanf("%d",&b); union_set(a,b); } } for(i = 0; i < k; i++){ int a,b; scanf("%d %d",&a,&b); int x = find_set(a); int y = find_set(b); if(x != y) printf("%d %d NO\n",a,b); else printf("%d %d YES\n",a,b); } return 0; }
实验(作业) 实验(作业)三简评
E、社会关系网络—并查集
void union_set(int x,int y){ int r1 = find_set(x); int r2 = find_set(y); if(r1 == r2) return; if(rank[r1] < rank[r2]) parent[r2] = r1; else{ if(rank[r1] == rank[r2]) rank[r2] += 1; parent[r1] = r2; } } int main(){ int n,m,k,i,t; scanf("%d %d %d",&n,&m,&k); for(i = 0; i < n; i++){ make_set(i); }
陈老师(南邮ACM竞赛教练) 南京邮电大学计算机学院 联系方式 电话:138-139-30027 电邮:acm@
ACM算法与数据结构设计 算法与数据结构设计
班 级 :仙林校区ACM选修班
上课地点和时间 理论:教2-402:星期3 (18:30开始) 实践:(仙林)计算中心
实验(作业) 实验(作业)三简评
实验(作业) 实验(作业)三简评
A、字符串排序
int main(){ string s[1000]; int i=0,j; while(cin>>s[i]){ i++;} stable_sort(s,s+i,cmp); for(j=0;j<i;j++) cout<<s[j]<<endl; return 0; }
实验(作业) 实验(作业)三简评
E、社会关系网络—并查集
#include<stdio.h> using namespace std; int parent[50001]; int rank[50001]; void make_set(int x){ parent[x] = x; rank[x] = 0; } int find_set(int x){ if(x != parent[x]) parent[x] = find_set(parent[x]); return parent[x]; }
“诚迈杯”第三届程序设计竞赛(2011.5) 诚迈杯”第三届程序设计竞赛( 诚迈杯 )
2011-5-22(周日)预赛 (周日) 地点:(仙林校区)计算中心 、 机房 地点:(仙林校区)计算中心A、B机房 :(仙林校区 时间:11:00进入赛场,比赛11:30 — 16:30 (5个小时 时间: 进入赛场,比赛 个小时) 进入赛场 个小时 人员: 人员:所有报名选手 目标:选拔不多于 目标:选拔不多于120名选手参加决赛 名选手参加决赛 2011-5-29(周日) 决赛 (周日) 地点:(仙林校区)计算中心 机房 地点:(仙林校区)计算中心A机房 :(仙林校区 时间: 进入赛场, 个小时) 时间:11:00进入赛场,比赛 进入赛场 比赛11:30 — 16:30 (5个小时 个小时 人员:南邮选手(不多于 人员:南邮选手(不多于120名)+ 南京地区校外选手 名 目标:特等奖 名 一等奖12名 二等奖18名 三等奖30名 目标:特等奖1名,一等奖 名,二等奖 名,三等奖 名; 2011年6月初 颁奖 年 月初
100 5000
输出样例
100: 6 28 5000: 6 28 496
实验(作业) 实验(作业)三简评
C、完数
Accepted Code
//#include "stdafx.h" #include <fstream> #include <iostream> #include <vector> using namespace std; int main(int argc, char* argv[]) { ifstream cin("aaa.txt"); vector<int> a; for(int i=2;i<10000;i=i+2){ int sum=1; for(int j=2;j<=i/2;j++){ if(i%j==0) sum=sum+j; } if(sum==i) a.push_back(i); } int n; while(cin>>n){ cout<<n<<":"; for(int i=0;i<a.size();i++){ if(a[i]<=n) cout<<" "<<a[i]; } cout<<endl; } return 0; }
1.1 Models and Modeling 比赛成绩
排名 1 2 3 4 5 6 7 学号 B10040132 B10041121 B10040235 B10100228 B10040913 B09030535 10003721 姓名 祖之越 杨 恺 曹 壹 彭湘雄 杜官文 缪冬磊 徐 渊 学院 计算机学院 计算机学院 计算机学院 传媒与艺术学院 计算机学院 光电工程学院 通达学院 奖项 金奖 金奖 金奖 银奖 银奖 银奖 银奖