随笔分类 -  南邮ACM

摘要:描述判断一个数是否为对称且不大于五位数的素数。 输入输入数据含有不多于50个的正整数(0using namespace std;bool sushu(int n);bool duichen(int n);int main(){ int n; while(cin>>n){ if(sushu(n)&&duichen(n)) cout10&&n100&&n1000&&n10000&&n<100000&&n%10==n/10000&&n/100%10==n/1000%10) 阅读全文
posted @ 2013-11-21 22:45 七年之后 阅读(510) 评论(0) 推荐(0)
摘要:描述自然数中,完数寥若晨星,请在从1到某个整数范围中打印出所有的完数来。所谓“完数”是指一个数恰好等于它的所有不同因子之和。例如,6是完数,因为6=1+2+3。而24不是完数,因为24≠1+2+3+4+6+8+12=36。输入输入数据中含有一些整数n(1<n<10000)。输出对于每个整数n,输出所有不大于n的完数。每个整数n的输出由n引导,跟上冒号,然后是由空格开道的一个个完数,每个n的完数列表应占独立的一行。样例输入100 5000样例输出100: 6 28 5000: 6 28 496 #include#includeint main(){ int n,p,i,t1,t2,temp... 阅读全文
posted @ 2013-11-21 22:44 七年之后 阅读(444) 评论(0) 推荐(0)
摘要:描述将01串首先按长度排序,长度相同时,按1的个数多少进行排序,1的个数相同时再按ASCII码值排序。 输入输入数据中含有一些01串,01串的长度不大于256个字符。输出重新排列01串的顺序。使得串按基本描述的方式排序。样例输入10011111 00001101 1010101 1 0 1100样例输出0 1 1100 1010101 00001101 10011111 #includeusing namespace std;bool f(char *p1,char *p2){ int len1,num1,num2,i; num1=num2=0; if(strlen(p1)>... 阅读全文
posted @ 2013-11-21 22:42 七年之后 阅读(415) 评论(1) 推荐(1)
摘要:描述有一些A、C、M组成的字符串,将其按字符A排序。 输入一组测试数据,输入数据由若干行组成,每行是字符A、C或M组成的字符串。输出对所有输入的数据,先按字符A的个数进行升序排序,如果字符A的数量相等,再按出现的先后顺序排序,每行输出一个字符串。样例输入ACM MCA AACAAMMM AACCMM CMAAMMMMMM AAA样例输出ACM MCA AACCMM CMAAMMMMMM AAA AACAAMMM #include#include#include#define MAXNUM 100using namespace std;string arr[MAXNUM];int index=- 阅读全文
posted @ 2013-11-21 22:41 七年之后 阅读(244) 评论(0) 推荐(0)
摘要:描述已知电文包括的字符集为{A,C,I,M,N,P,T,U},输入对应权值,对字符集合进行哈夫曼编码,完成电文的哈夫曼编码与译码工作。 输入共三行:第一行为对应字符集{A,C,I,M,N,P,T,U}的权值第二行为一段字符串表示的电文(长度不超过1000);第三行为一段电文的哈夫曼编码。输出共十行:前八行为各字符的编码;第九行是与第二行输入对应的哈夫曼编码;第十行是与第三行输入对应的电文。样例输入1 2 3 4 5 6 7 8 NUPTICPCACM 1111011111100样例输出A: 11110 C: 11111 I: 1110 M: 100 N: 101 P: 110 T: 00 U: 阅读全文
posted @ 2013-11-21 22:40 七年之后 阅读(598) 评论(0) 推荐(0)
摘要:描述二叉树是非常重要的树形数据结构。复制一棵二叉树是在另一个存储区存放相同的结构和内容,而一棵二叉树上所有左右子树互换是在原存储区上的运算。请分别根据先序遍历序列建立两棵的二叉树(用#代表空树或空子树),再将这两棵二叉树复制为左右子树建立第三棵二叉树,输出先序和层次遍历序列,最后将第三棵二叉树上所有左右子树互换,并输出先序和层次遍历序列。输入共三行前两行分别对应两棵二叉树的先序遍历序列,用#代表空树或空子树第三行为第三棵二叉树的根结点。输出共四行前两行为第三棵二叉树生成时的先序、层次遍历序列,后两行为第三棵二叉树左右子树互换后的先序、层次遍历序列。样例输入B # D # # C E # # F 阅读全文
posted @ 2013-11-21 22:38 七年之后 阅读(470) 评论(0) 推荐(0)
摘要:描述二叉树是非常重要的树形数据结构,层次遍历一棵二叉树是按从上到下、从左到右的次序访问树上的结点。例如,图1020所示的二叉树层次遍历序列为A B C D E F。图1020请根据先序遍历序列建立一棵的二叉树(用#代表空树或空子树),输出层次遍历序列。输入二叉树的先序遍历序列,用#代表空树或空子树输出二叉树层次遍历序列样例输入A B # D # # C E # # F # #样例输出LevelOrder: A B C D E F #include #include using namespace std;class BTNode{public: char data; BTNode ... 阅读全文
posted @ 2013-11-21 22:37 七年之后 阅读(547) 评论(0) 推荐(0)
摘要:描述二叉树是非常重要的树形数据结构,根据该树的先序、中序或后序遍历序列可以建立一棵二叉树。例如输入先序遍历序列A B # D # # C E # # F # #可以建立图1019-1所示的二叉树,这里用#代表空树或空子树(另一种说法:若无孩子结点,则用#代替),如图1019-2。图1019-1图1019-2请实现基于遍历的二叉树运算:求高度、计算结点数目输入二叉树的先序遍历序列,用#代表空树或空子树。输出共五行前三行依次输出先序、中序和后序遍历序列,第四行输出二叉树的高度,第五行依次输出二叉树总结点数目、叶子结点数目、度为1的结点数目。样例输入A B # D # # C E # # F # # 阅读全文
posted @ 2013-11-21 22:35 七年之后 阅读(834) 评论(0) 推荐(0)
摘要:描述二叉树(binary tree)是非常重要的树形数据结构,它是结点的有限集合,该集合或者为空集,或者是由一个根和两个互不相交的、称为该根的左子树和右子树的二叉树组成。一般意义上,遍历(traverse)一棵二叉树意味着对该二叉树中的每个结点访问且仅访问一次。(1)若二叉树不为空,先序遍历是指先访问该树根结点,再访问先序遍历左子树,最后先序遍历右子树。(2)若二叉树不为空,中序遍历是指先中序遍历左子树,再访问该树根结点,最后中序遍历右子树。(3)若二叉树不为空,后序遍历是指先后序遍历左子树,再后序遍历右子树,最后访问该树根结点。图1018-1给出一棵二叉树,先序遍历序列为A B D C E 阅读全文
posted @ 2013-11-21 22:31 七年之后 阅读(390) 评论(0) 推荐(0)
摘要:描述今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子:有一个数字串:312, 当N=3,K=1时会有以下两种分法:1) 3*12=362) 31*2=62这时,符合题目要求的结果是:31*2=62现在,请你帮助你的 阅读全文
posted @ 2013-11-21 22:30 七年之后 阅读(330) 评论(0) 推荐(0)
摘要:#includeusing namespace std;#define max 200int main(){ int a[max]={0},n,e,j,k,q,set=0; char c[20]; while(cin>>c>>n) { int len=strlen(c),base=0,i,record=0; for(i=0;i=0;i--) if(a[i]!=0) break; if(record>i) { cout... 阅读全文
posted @ 2013-11-21 22:29 七年之后 阅读(313) 评论(0) 推荐(0)
摘要:描述求两个正整数的最大公约数和最小公倍数输入两个正整数A,B输出两个正整数的最大公约数、最小公倍数样例输入4 3样例输出1 12#include using namespace std;void swap(int &x,int &y){ int temp=x; x=y; y=temp;}int gcd(int m,int n){ if(m==0) return n; if(m>n) swap(m,n); return gcd(n%m,m);}int main(){ int m,n,a,b; cin>>m>>n; a=gcd(m,n); ... 阅读全文
posted @ 2013-11-21 22:25 七年之后 阅读(370) 评论(0) 推荐(0)
摘要:描述在一组数据(数目不超过10000)中,插入新数,删除所有与给定数相等的数据。输入第一行是未排序的一组非负整数,数目不超过10000。以-1作为结束标志。第二行是要插入的数。第三行是要删除的数。输出第一行输出自小到大排好序的数。如果没有元素,输出“No elements.”(不包括引号)。第二行输出插入后自小到大排好序的数,以“,”隔开。第三行输出删除后自小到大排好序的数,以“,”隔开。如果没有元素,输出“No elements.”(不包括引号)。样例输入100 98 79 63 44 99 -1 88 79样例输出44,63,79,98,99,100 44,63,79,88,98,99,1 阅读全文
posted @ 2013-11-21 22:24 七年之后 阅读(419) 评论(0) 推荐(0)
摘要:描述给定三条边的长度,判断能否组成三角形,如果可以,判断三角形的形状。 输入一组数据,每行三个实数,在(0,10]之间,精确到小数点后第四位。最后以0 0 0表示结束。输出根据每行的数据判断,如果不能组成三角形,则输出“Not a triangle”;如果是“等腰三角形”,则输出“Isosceles triangle”;如果是“直角三角形”,则输出“Right triangle”;如果是“等腰直角三角形”,则输出“Isosceles right triangle”;如果是“等边三角形”,则输出“Equilateral triangle”;否则,输出“General triangle”。最后输出 阅读全文
posted @ 2013-11-21 22:23 七年之后 阅读(551) 评论(0) 推荐(0)
摘要:描述将一个十进制数N转换成R进制数输出,2≤R≤16,R≠10。输入多行。第一行指出以下一共有多少组数据,后续每行包含两个整数N和R,以空格分隔,-100000≤N≤100000,2≤R≤16,R≠10。输出多行。每行给出转换后的R进制数。样例输入3 7 2 23 12 -4 3样例输出111 1B -11#include #include #define N 17using namespace std;int main(){ int m,n,r; int a[N]={0}; scanf("%d",&m); for(int j=0;j=0;i--) ... 阅读全文
posted @ 2013-11-21 22:22 七年之后 阅读(353) 评论(0) 推荐(0)
摘要:描述求两个非负整数(1000位以内)的和。输入两个非负整数(1000位以内),以空格分隔。输出两个非负整数的和。样例输入111111111111 222222222222样例输出333333333333#include #include using namespace std;#define N 1001int main(){ char a[N],b[N]; int sum[N]; for (int j=0;j>a; m1=strlen(a); cin>>b; m2=strlen(b); m3=m1m2?m1:m2; for (int i=0;i... 阅读全文
posted @ 2013-11-21 22:20 七年之后 阅读(328) 评论(0) 推荐(0)
摘要:描述要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(nusing namespace std;int number[500];int main(){ int n,sum=0,i; number[0]=1; for(i=1;i>n; for(i=0;i<=n/2;i++) sum+=number[i/2]; cout<<sum; return 0;} 阅读全文
posted @ 2013-11-21 22:17 七年之后 阅读(379) 评论(0) 推荐(0)
摘要:描述编程精确计算2的N次方。(N是介于100和1000之间的整数)。输入正整数N (100≤N≤1000)输出2的N次方样例输入200样例输出1606938044258990275541962092341162602522202993782792835301376#includeusing namespace std;int main(){ int a[350]={0}; int n; cin>>n; int i,j,f=1; a[0]=1; for(i=0;i9) { a[j]%=10; ... 阅读全文
posted @ 2013-11-21 22:16 七年之后 阅读(562) 评论(0) 推荐(0)
摘要:描述在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。给定公元2000年1月1日后的某年某月某日(包括2000年1月1日),你的任务:(1)给出这一天从公元2000年1月1日开始逝去的天数,(2)判断这一天是当年的第几天。输入输入包含若干行,每行包含三个空格间隔的正整数,它们分别表示年、月、日。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。输出多组,每组两行,分别为每行输入所代表的一天从公元200 阅读全文
posted @ 2013-11-21 22:15 七年之后 阅读(626) 评论(0) 推荐(0)
摘要:描述a3 = b3 + c3 + d3为完美立方等式。例如123 = 63 + 83 + 103 。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a3 = b3 + c3 + d3,其中1using namespace std;int main(){ int n,a,b,c,d; int a1,b1,c1,d1; cin>>n; for(a=2;a<=n;a++) { a1=a*a*a; for(b=2;b<n;b++) { b1=b*b*b; ... 阅读全文
posted @ 2013-11-21 22:13 七年之后 阅读(344) 评论(0) 推荐(0)