山东理工大学ACM平台题目答案
大学ACM考试题目及作业答案整理

ACM作业与答案整理1、平面分割方法:设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。
#include <iostream.h>int f(int n){if(n==1) return 2;else return f(n-1)+2*(n-1);}void main(){int n;while(1){cin>>n;cout<<f(n)<<endl;}}2、LELE的RPG难题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.编程全部的满足要求的涂法.#include<iostream.h>int f(int n){if(n==1) return 3;else if(n==2) return 6;else return f(n-1)+f(n-2)*2;}void main(){int n;while(1){cin>>n;cout<<f(n)<<endl;}}3、北大ACM(1942)Paths on a GridTime Limit: 1000MS Memory Limit: 30000K DescriptionImagine you are attending your math lesson at school. Once again, you are bored because your teacher tells things that you already mastered years ago (this time he's explaining that (a+b)2=a2+2ab+b2). So you decide to waste your time with drawing modern art instead.Fortunately you have a piece of squared paper and you choose a rectangle of size n*m on the paper. Let's call this rectangle together with the lines it contains a grid. Starting at the lower left corner of the grid, you move your pencil to the upper right corner, taking care that it stays on the lines and moves only to the right or up. The result is shown on the left:Really a masterpiece, isn't it? Repeating the procedure one more time, you arrive with the picture shown on the right. Now you wonder: how many different works of art can you produce?InputThe input contains several testcases. Each is specified by two unsigned 32-bit integers n and m, denoting the size of the rectangle. As you can observe, the number of lines of the corresponding grid is one more in each dimension. Input is terminated by n=m=0.OutputFor each test case output on a line the number of different art works that can be generated using the procedure described above. That is, how many paths are there on a grid where each step of the path consists of moving one unit to the right orone unit up? You may safely assume that this number fits into a 32-bit unsigned integer.Sample Input5 41 10 0Sample Output1262#include<iostream>using namespace std;longlong f(long long m, long long n){if(n==0) return 1;else return f(m-1,n-1)*m/n;}int main(){longlongm,n;while(scanf("%I64d %I64d",&n,&m) &&n+m){printf("%I64d\n",f(m+n,min(m,n)));}return 0;}1、(并查集)若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。
acm初赛试题及答案

acm初赛试题及答案# acm初赛试题及答案1. 问题描述给定一个整数n,求出n以内所有正整数的和。
2. 输入格式输入包含一个整数n(1≤n≤10000)。
3. 输出格式输出一个整数,表示n以内所有正整数的和。
4. 样例输入```100```5. 样例输出```5050```6. 问题分析本题要求计算从1到n的所有正整数的和。
这是一个简单的数学问题,可以通过公式求解。
7. 解题思路使用求和公式:\( \sum_{i=1}^{n} i = \frac{n(n+1)}{2} \)。
8. 算法实现编写一个函数,输入n,输出计算结果。
9. 代码示例```pythondef sum_of_numbers(n):return n * (n + 1) // 2n = int(input())print(sum_of_numbers(n))```10. 注意事项输入的n可能会非常大,需要考虑整数溢出的问题。
11. 测试用例- 输入:1输出:1- 输入:10输出:55- 输入:10000输出:5000500012. 评分标准- 正确性:算法正确,输出结果符合预期。
- 效率:算法执行效率高,能在规定时间内完成计算。
- 代码风格:代码可读性好,注释清晰。
13. 常见错误- 未考虑整数溢出。
- 未正确使用求和公式。
- 代码中存在语法错误。
14. 扩展思考- 如果要求计算从m到n的所有正整数的和,应该如何修改算法? - 如何优化算法以处理更大的输入值?15. 参考答案- 对于扩展思考的第一个问题,可以将求和公式修改为:\( \sum_{i=m}^{n} i = \frac{n(n+1)}{2} - \frac{(m-1)m}{2} \)。
- 对于扩展思考的第二个问题,可以考虑使用更高效的数据结构或者算法来减少计算量。
以上是ACM初赛试题及答案的完整内容。
ACM软件大赛之编程大赛题目(附部分答案)

ACM 软件大赛之编程大赛比赛注意事项:l 比赛时间为3小时(小时(180180分钟);比赛分两个阶段:第一阶段限时30分钟,完成公示的3题,第二阶段限时150分钟(事先完成第一阶段题目的小组可提前进入第二阶段); l 比赛第一阶段的3道题目将在前期宣传中告知参赛选手,比赛第二阶段的题目将由赛事主席当场公布竞赛题目;主席当场公布竞赛题目;l 前两阶段题目分为三个分值(前两阶段题目分为三个分值(55分、分、1010分、分、1515分),第一阶段3道公示题都为5分;第二阶段总共15道题,根据不同的难度分值不同,分别为5道5分题,分题,55道10分题,分题,55道15分题;第一阶段参赛队员不可参考任何相关资料;第二阶段参赛队员可以携带诸如书,如书,手册,程序清单等参考资料。
手册,程序清单等参考资料。
手册,程序清单等参考资料。
比赛过程中队员不得携带任何电子媒质的资料;参比赛过程中队员不得携带任何电子媒质的资料;参赛者可以选择自己擅长的语言(赛者可以选择自己擅长的语言(C,C++,JAVA C,C++,JAVA 等等)进行编写等等)进行编写l 考虑到大一和大二学生的知识掌握程度,大一参加选手一开始就会有10分的分数,最后总分是由所做题目及初始的10分相加得到。
分相加得到。
l 每组队员根据安排使用电脑,小组人数为两人的使用一台电脑,超过两人的使用两台电脑,每台的电脑配置完全相同;脑,每台的电脑配置完全相同;l 各小组每做完一题或几题,必须交予评委老师运行,评委老师当场给分;各小组每做完一题或几题,必须交予评委老师运行,评委老师当场给分; l 如在比赛中发现作弊等行为,将取消比赛资格。
如在比赛中发现作弊等行为,将取消比赛资格。
第一阶段公示题目:题目一:(5分) 打印以下图形,纵遵从字母顺序,行字符数遵从斐波那契数列ABCCDDD EEEEEFFFFFFFFGGGGGGGGGGGGG#include<iostream>int f(int x){int a = 1 , b = 0;int max_ = x;int sum = 0; for(int i = 0; i < max_ ; i++){sum = a + b;a = b;b = sum;}return sum;}void loop_print(int num,char chr){for(int i = 0; i < num ;i++)std::cout<<chr;std::cout<<"\n";}int main(){int line_max = 7;char chr = 'A';for(int line = 0; line < line_max; line++){loop_print(f(line+1),chr);chr++;}return 0;}题目二:(5分)有个电子钟,12点显示为12:00(即12小时制),那么请问一天24时间内,出现连续3个相同数字的钟点有几个?#include<iostream>using namespace std;bool check(int me){int h= me/100;int m= me-100*h;return h<=12&&m<=59&&h>0?true:false;//12小时制小时制}int main(){int me=0;int j(0);//总计数器总计数器while( me<1270){//max 12:59int t= me;int n[4];for(int i=0;i<4;i++){n[i]=t%10;t /= 10;}if(n[1]==n[2]&&(n[0]==n[1]||n[3]==n[1])&&check( me)){//cout<<n[3]<<n[2]<<":"<<n[1]<<n[0]<<"\n";//testj++;me++;}cout<<"total: "<<j*2<<endl;}题目三:(5分)10进制的四位数中有几个符合如下特征:将其分别表示为16进制、10进制、12进制,在每种状态下,分别将各个位上的数相加,能得到3个相等10进制数。
[整理]山东理工大学ACM平台题目答案
![[整理]山东理工大学ACM平台题目答案](https://img.taocdn.com/s3/m/58aa0f12b9d528ea80c7797d.png)
[整理]山东理工大学ACM平台题目答案山东理工大学ACM平台题目答案1464#include<stdio.h> #include<stdlib.h> struct node{int date;struct node *next; };struct node *creat(struct node *head,int m){int i;struct node *p,*tail;head->next=NULL;tail=head;for(i=1;i<=m;i++){p=(struct node*)malloc(sizeof(struct node));scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head;}struct node *del(struct node *head,int z,int r) {struct node *q,*p;int i=0;p=head;while(p->next!=NULL){if((p->next->date>=z)&&(p->next->date<=r)){i=1;break;}else p=p->next;}if(i==1){q=p->next;p->next=q->next;free(q);return p;}else return 0;}void show(struct node *head) {struct node *y;y=head->next;while(y!=NULL){if(y->next!=NULL)printf("%d ",y->date);if(y->next==NULL)printf("%d",y->date);y=y->next;}printf("\n");}int main(){int n,v,n1,n2,n3,i;struct node *head,*q;scanf("%d",&n1);for(i=0;i<n1;i++){v=0;head=(struct node*)malloc(sizeof(struct node)); scanf("%d %d %d",&n,&n2,&n3);getchar();creat(head,n);q=head;while(q!=NULL){q=del(q,n2,n3);++v;}if(v-1==n)printf("-1\n");elseshow(head);free(q);free(head);}return 0;}1138#include<stdio.h>#include<stdlib.h>struct node{int date;struct node *next; };struct node *creat(struct node *head,int m) {int i;struct node *p,*tail;head->next=NULL;tail=head;for(i=1;i<=m;i++){p=(struct node*)malloc(sizeof(struct node)); scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head;}struct node *del(struct node *head,int z) {struct node *q,*p;int i=0;p=head;while(p->next!=NULL){if(p->next->date==z){i=1;break;}else p=p->next;}if(i==1){q=p->next;p->next=q->next;free(q);return p;}else return 0; }void show(struct node *head) { struct node *y;y=head->next;while(y!=NULL){if(y->next!=NULL)printf("%d ",y->date);if(y->next==NULL)printf("%d",y->date);y=y->next;}printf("\n"); }int main(){int n,k,v=0;struct node *head,*q;head=(struct node*)malloc(sizeof(struct node));scanf("%d",&n);creat(head,n);scanf("%d",&k);printf("%d\n",n);show(head);q=head;while(q!=NULL){q=del(q,k);++v;}printf("%d\n",n-v+1);show(head);return 0;}1605#include<stdio.h> #include<string.h> void show(char c,int a,int b) { if(c=='+')printf("%d\n",a+b);else if(c=='-')printf("%d\n",a-b);else if(c=='*')printf("%d\n",a*b);else if(c=='/'&&b!=0)printf("%.2lf\n",1.0*a/b);}int main(){int n,a[1000],b[1000],i;char c[1000];while(scanf("%d",&n)!=EOF){getchar();for(i=0;i<n;i++){scanf("%c %d %d",&c[i],&a[i],&b[i]); getchar();}for(i=0;i<n;i++){show(c[i],a[i],b[i]);}}return 0;}1606#include<stdio.h> int f(int m) {int p;if(m==0)p=7;if(m==1)p=11;if(m>1)p=f(m-1)+f(m-2);return p;}int main(){int n,m;while(scanf("%d",&n)!=EOF) {m=f(n);if(m%3==0)printf("yes\n");elseprintf("no\n");}return 0;}1608#include<stdio.h> #include<stdlib.h> int main() {int n,m,i,j,k;int *a;scanf("%d %d",&n,&k);a=(int *)malloc(n*sizeof(int));for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++){if(a[j]<a[j+1]){m=a[j];a[j]=a[j+1];a[j+1]=m;}}for(i=0;i<k;i++){if(i<k-1)printf("%d ",a[i]);else printf("%d\n",a[i]);}return 0;}1607#include<stdio.h>#include<stdlib.h>int main(){int n,a,b,i;int *x;while(scanf("%d %d %d",&a,&b,&n)!=EOF&&(a||b||n)) {x=(int *)malloc(n*sizeof(int));x[0]=1;x[1]=1;for(i=2;i<n;i++){x[i]=(a*x[i-1]+b*x[i-2])%7;}printf("%d\n",x[n-1]);free(x);}return 0;}1634#include<stdio.h> int f(int k) {int i,j;for(i=2;i<k;i++){if(k%i==0){j=i;break;}}return j; }int show(int a) { int i;for(i=2;i<a-1;i++) if(a%i==0)return 0;return 1; }int main(){int n,m,i,k;scanf("%d",&n);for(i=0;i<n;i++) {scanf("%d",&m);k=m;if(show(m))printf("%d",m);if(!show(m)){while(!show(k)){printf("%d*",f(k));k=k/f(k);}printf("%d",k);}printf("\n");}return 0;}2119#include<stdio.h> #include<stdlib.h> struct node {int date;struct node *next; };struct node * creat(int n) {struct node *p,*head1,*tail;head1=(struct node*)malloc(sizeof(struct node)); int i;head1->next=NULL;tail=head1;for(i=1;i<=n;i++){p=(struct node*)malloc(sizeof(struct node)); scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head1;}struct node * built(int m) {struct node *q,*head2,*end;head2=(struct node*)malloc(sizeof(struct node)); int j;head2->next=NULL;end=head2;for(j=1;j<=m;j++){q=(struct node *)malloc(sizeof(struct node)); scanf("%d",&q->date);q->next=NULL;end->next=q;end=q;}return head2;}struct node * merge(struct node *head1,struct node *head2) {struct node *p,*q,*tail;p=head1->next;q=head2->next;tail=head1;free(head2);while(p&&q){if(p->date<q->date){tail->next=p;tail=p;p=p->next;}else{tail->next=q;tail=q;q=q->next;}}if(p)tail->next=p;elsetail->next=q;return head1; }void show(struct node *head1) {struct node *p;p=head1->next;while(p!=NULL){if(p->next!=NULL)printf("%d ",p->date);elseprintf("%d\n",p->date);p=p->next;}}int main(){struct node *head1,*head2;int n,m;scanf("%d %d",&n,&m);head1=creat(n);head2=built(m);head1=merge(head1,head2);show(head1);return 0;}2120#include<stdio.h> #include<stdlib.h> int c=0;int v=0; struct node{int date;struct node *next; };struct node *creat(int n){struct node *head1,*p,*tail;int i;head1=(struct node *)malloc(sizeof(struct node)); head1->next=NULL;tail=head1;for(i=1;i<=n;i++){p=(struct node *)malloc(sizeof(struct node));scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head1;}struct node *split(struct node *head1) {struct node *head2,*p,*q,*tail,*end;head2=(struct node *)malloc(sizeof(struct node)); head2->next=NULL;end=head2;p=head1->next;head1->next=NULL;tail=head1;q=p->next;while(p!=NULL){if(p->date%2!=0){p->next=NULL;tail->next=p;tail=p;c++;}else{p->next=NULL;end->next=p;end=p;v++;}p=q;if(q!=NULL)q=q->next;}return head2; }void show(struct node *head1,struct node *head2) {struct node *p,*q;p=head2->next;q=head1->next;while(p!=NULL){if(p->next!=NULL)printf("%d ",p->date);elseprintf("%d\n",p->date);p=p->next;}while(q!=NULL){if(q->next!=NULL)printf("%d ",q->date); elseprintf("%d\n",q->date);q=q->next;}}int main(){int n;struct node *head1,*head2; scanf("%d",&n);head1=creat(n);head2=split(head1);printf("%d %d\n",v,c); show(head1,head2);return 0;}2187#include<stdio.h>#include<string.h>int main(){char a[100000],b[100000];int i,j,k,m,v,c,n;while(scanf("%s %s",a,b)!=EOF) {n=0;getchar();k=strlen(a);j=strlen(b);c=0;for(i=0;i<k;i++){v=0;m=n;for(;m<j;){if(a[i]-b[m]==0){n=m;v=1;n=n+1;break;}else m++;}if(v==1)c++;}if(c==k)printf("Yes\n");else printf("No\n");}return 0;}2761#include<stdio.h>#include<string.h> int main(){int m,j,k,i,c[10000],v;char a[10000];while(scanf("%s",a)!=EOF){getchar();k=strlen(a);m=0;for(i=0;i<k;){c[m]=0;v=0;for(j=i;;j++){if(a[i]-a[j]==0){c[m]++;++v;}if(a[i]-a[j]!=0){break;}}if(c[m]==1)printf("%c",a[i]);if(c[m]>1)printf("%d%c",c[m],a[i]);i=i+v;m++;}printf("\n");}return 0;}2765#include<stdio.h> int main() {int n,m,i;long a[100];while(scanf("%d %d",&n,&m)!=EOF) {for(i=1;i<m;i++){a[i]=i;}for(i=m;i<=n;i++)a[i]=a[i-m+1]+a[i-1];printf("%ld\n",a[n]);}return 0;}2773#include<stdio.h> int main() {int n,m,i,k;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&m);if(m<150)k=m;else if(m>150&&m<200)k=m-150;else if(m>200&&m<300)k=m-200;else if(m>300&&(m%100>0)&&(m%100<50)) k=m%100;else if(m>300&&(m%100>50)&&(m%100<100)) k=m%100-50;elsek=0;printf("%d\n",k);}return 0;}2560#include<stdio.h>#include<string.h> int main(){int i,j,k,n;char a[100000],b[100000],c[5];strcpy(c,"2013");while(gets(a)!=NULL){if(strcmp(a,c)==0)break;k=strlen(a);j=0;for(i=0;i<k;i++){if(a[i]!=' '){b[j]=a[i];j++;}}n=0;for(i=0,k=j-1;i<k;i++,k--) {if(b[i]==b[k])n++;}if(n==j/2)printf("YES\n");else printf("NO\n");}return 0;}1916#include<stdio.h> #include<string.h> int main(){int n,j,k,i,m,v,h;char a[1000],b[100000];scanf("%d",&n);getchar();for(i=0;i<n;i++){scanf("%s",a);getchar();h=strlen(a);k=0;for(j=0;j<h;j++){if(a[j]=='-'&&(a[j-1]>='0'&&a[j-1]<='9'&&a[j+1]<='9'&&a[ j+1]>='0')&&(a[j+1]-a[j-1]>=0)){for(m=j;m<j+a[j+1]-a[j-1]-1;m++){b[k]=a[j-1]+(m-j+1);k++;}}elseif(a[j]=='-'&&(a[j-1]>='a'&&a[j-1]<='z'&&a[j+1]<='z'&&a[j+1 ]>='a')&&(a[j+1]-a[j-1]>=0)){for(m=j;m<j+a[j+1]-a[j-1]-1;m++){b[k]=a[j-1]+(m-j+1);k++;}}elseif(a[j]=='-'&&(a[j-1]>='A'&&a[j-1]<='Z'&&a[j+1]<='Z'&&a[j+1 ]>='A')&&(a[j+1]-a[j-1]>=0)){for(m=j;m<j+a[j+1]-a[j-1]-1;m++){b[k]=a[j-1]+(m-j+1);k++;}}else{b[k]=a[j];k++;}}for(v=0;v<k;v++)printf("%c",b[v]);printf("\n");}return 0;}2085#include<stdio.h> #include<string.h> int main() {int n,m,j,i,k,h,i1,i2,v;char a[20][201],t;scanf("%d",&n);getchar();for(i=0;i<n;i++){gets(a[i]);k=strlen(a[i]);for(j=0,h=k-1;j<h;j++,h--){t=a[i][j];a[i][j]=a[i][h];a[i][h]=t;}a[i][k]=' ';m=0;v=0;for(j=0;j<=k;j++){if(a[i][j]==' '){m=j;for(i1=v,i2=m-1;i1<i2;i2--,i1++){t=a[i][i1];a[i][i1]=a[i][i2];a[i][i2]=t;} v=m+1;}}printf("Case %d:",i+1);for(h=0;h<k;h++)printf("%c",a[i][h]);printf("\n");}return 0;}1568#include<stdio.h>#include<string.h>int main(){int n,j,k,m,i,v,h;char a[20][20];scanf("%d %d",&n,&m); getchar();for(i=0;i<n;i++) {gets(a[i]);}for(i=0;i<n;i++) {k=0;for(j=0;j<m;j++) {if(a[i][j]=='1')++k;}if(k==m){for(h=i;h>0;h--) strcpy(a[h],a[h-1]); for(v=0;v<m;v++)a[0][v]='0';}}for(i=0;i<n;i++) {for(j=0;j<m;j++)printf("%c",a[i][j]);printf("\n");}return 0;}1594#include<stdio.h>#include<string.h> int main() {int m,n,i,j;char a[20][20],b[20][20];scanf("%d %d",&n,&m);getchar();for(i=0;i<n;i++){gets(a[i]);}for(i=0;i<n;i++)for(j=0;j<m;j++){b[j][i]=a[i][j];}for(i=0;i<m;i++){for(j=n-1;j>=0;j--){printf("%c",b[i][j]);}printf("\n");}return 0;}2809#include<stdio.h> #include<math.h> int show(int a){int i;for(i=2;i<=sqrt(a);i++)if(a%i==0)return 0;return 1; }int main(){int m,i;while(scanf("%d",&m)!=EOF&&(m||m)) {for(i=2;i<m;i++){if(show(i)&&show(m-i)){printf("%d = %d + %d\n",m,i,m-i);break;}}}return 0;}2109#include<stdio.h> #include<algorithm> using namespace std; long a[1000004]; int main(){int n,i;scanf("%d",&n);for(i=0;i<n;i++){scanf("%ld",&a[i]);}sort(a,a+n);reverse(a,a+n);for(i=0;i<n;i++){if(i<n-1)printf("%ld ",a[i]);if(i==n-1)printf("%ld\n",a[i]);}return 0;}2765#include<stdio.h>int main(){int n,i;long a[21];while(scanf("%d",&n)!=EOF) {a[1]=0;a[2]=1;for(i=3;i<=n;i++)a[i]=(n-1)*(a[i-1]+a[i-2]); printf("%ld\n",a[n]);}return 0;}2521#include<stdio.h>int main(){int n, i, j, max, c, x;long long a[1000];while(scanf("%d", &n)!=EOF) {max = -1;c = 0;for(i = 0; i < n; i++){scanf("%d", &a[i]);}for(i = 0; i < n; i++){x = 0;for(j = i + 1; j < n; j++) {if(a[i] == a[j])x++;}if(max < x){max = x;c = i;}else if(max == x){if(a[c] > a[i]){c = i;}}else max = max;}printf("%lld %d\n", a[c], max+1); }return 0;}2801#include<stdio.h>int main(){int n,m,i,c,t,j;while(scanf("%d %d",&n,&m)!=EOF) {int a[10000],b[10000];int g[100000]={0};c=0;for(i=0;i<m;i++){scanf("%d %d",&a[i],&b[i]);if(a[i]>b[i]){t=a[i];a[i]=b[i];b[i]=t;} }for(i=0;i<m-1;i++){for(j=i+1;j<m;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t; t=b[i];b[i]=b[j];b[j]=t; }}}if(a[0]!=0)printf("0\n");else{g[b[0]]=1;for(i=0;i<m;i++){if(g[a[i]]==1)g[b[i]]=1;else if(g[b[i]]==1)g[a[i]]=1;}for(i=1;i<n;i++){if(g[i]==1){c++;}}printf("%d\n",c);}}return 0;}2747#include<stdio.h> #include<string.h> char a[81],c[81]; int main(){int j,m,i,h,n,v;while(scanf("%s",a)!=EOF){getchar();m=-1;n=strlen(a);for(i=0;i<n;i++) {v=0;if(n%(i+1)==0) {h=0;for(j=0;j<n;j++) {c[j]=a[h];if(h==i)h=0;else h++;}c[n]='\0';if(strcmp(a,c)==0) {v=i;break;}}}for(i=0;i<=v;i++) printf("%c",a[i]); printf("\n");}return 0;}2398#include<stdio.h>#include<string.h> struct node{int q;char p[1000];}a[10000],b[10000],c[10000]; int main() {struct node d;int n,m,x,j,i,o;int k,n2;while(scanf("%d",&n)!=EOF){int n1[10000];for(o=0;o<n;o++){scanf("%d %d",&m,&x);for(i=0;i<m;i++){scanf("%s %d",a[i].p,&a[i].q);}for(j=m;j<x+m;j++){a[j].q=0;scanf("%s %d",a[j].p,&n1[j]); for(k=0;k<n1[j];k++){scanf("%s",c[k].p);for(i=0;i<m+x;i++)if(strcmp(c[k].p,a[i].p)==0) a[j].q=a[j].q+a[i].q;}}scanf("%d",&n2);for(i=0;i<n2;i++){scanf("%s",b[i].p);}for(i=0;i<n2;i++)for(j=0;j<m+x;j++){if(strcmp(b[i].p,a[j].p)==0) {b[i].q=a[j].q;}}for(i=0;i<n2-1;i++)for(j=i+1;j<n2;j++){if(b[i].q>b[j].q){d=b[i];b[i]=b[j];b[j]=d;}}for(i=0;i<n2;i++){printf("%s\n",b[i].p);}printf("\n");}printf("\n");}return 0;}1227#include<stdio.h> int main() {int n,m,j,i,k,c;int a[100001],b[100001];scanf("%d %d",&n,&m);for(i=0;i<n;i++)scanf("%d",&a[i]);for(j=0;j<m;j++)scanf("%d",&b[j]);c=0;k=-1;for(i=0;i<n;i++){for(j=0;j<m;j++){if(a[i]==b[j]&&k<j){k=j;c++;break;}}}printf("%d\n",c);return 0;}2046#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main(){char a[202],b[202];int c[202]={0};int n,m,k,i;scanf("%s %s",a,b);getchar();n=strlen(a);m=strlen(b); reverse(a,a+n);reverse(b,b+m);if(n>m){k=n;for(i=0;i<m;i++){if(c[i]+a[i]+b[i]-96<10)c[i]=(a[i]+b[i]-96+c[i]);else if(c[i]+a[i]+b[i]-96>=10) {c[i]=(a[i]+b[i]-96+c[i])%10; c[i+1]=1;}}if(c[m]==0)for(i=m;i<n;i++)c[i]=a[i]-48;if(c[m]==1)for(i=m;i<n;i++){if(c[i]+a[i]-48>=10){c[i]=(a[i]+c[i]-48)%10;c[i+1]=1;}elsec[i]=a[i]-48+c[i];}}else if(n<m){k=m;for(i=0;i<n;i++){if(c[i]+a[i]+b[i]-96<10)c[i]=(a[i]+b[i]-96+c[i]);else if(c[i]+a[i]+b[i]-96>=10) {c[i]=(a[i]+b[i]-96+c[i])%10; c[i+1]=1;}}if(c[n]==0)for(i=n;i<m;i++)c[i]=b[i]-48;else if(c[n]==1)for(i=n;i<m;i++){if(c[i]+b[i]-48>=10){c[i]=(b[i]+c[i]-48)%10; c[i+1]=1;}elsec[i]=b[i]-48+c[i];}}else if(n==m){k=n;for(i=0;i<m;i++){if(c[i]+a[i]+b[i]-96<10) c[i]=(a[i]+b[i]-96+c[i]);else if(c[i]+a[i]+b[i]-96>=10){c[i]=(a[i]+b[i]-96+c[i])%10;c[i+1]=1;}}}if(c[k]==0){reverse(c,c+k);for(i=0;i<k;i++)printf("%d",c[i]);}if(c[k]==1){reverse(c,c+k+1);for(i=0;i<=k;i++)printf("%d",c[i]);}printf("\n");return 0;}2074#include<stdio.h> #include<algorithm> using namespace std; int main(){int n,m,i;while(scanf("%d %d",&n,&m)!=EOF) {int a[300],b[300];for(i=0;i<n;i++)scanf("%d",&a[i]);if(n<=m){printf("%d\n",n);}else{sort(a,a+n);for(i=1;i<n;i++){b[i-1]=a[i]-a[i-1]-1;}sort(b,b+n-1);int k=a[n-1]-a[0]+1;int nline=1;int devide=n-2;while((nline<m)&&(b[devide]>0)) {nline++;k=k-b[devide];devide--;}printf("%d\n",k);}}return 0;}1299#include<stdio.h> int main() {int n,m,j,i;int a[1001],b[1001];scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);b[1]=1;for(i=2;i<=n;i++){m=0;for(j=1;j<i;j++)if(a[i]>a[j])if(m<b[j])。
acm试题及答案2

acm试题及答案2ACM试题及答案21. 问题描述:编写一个程序,计算给定整数序列中的最大子段和。
2. 输入格式:第一行包含一个整数N,表示序列的长度。
第二行包含N个整数,表示序列中的整数。
3. 输出格式:输出一个整数,表示序列中的最大子段和。
4. 样例输入:```51 -2 -34 -1```5. 样例输出:```6```6. 问题分析:该问题可以通过动态规划的方法来解决。
定义一个数组dp,其中dp[i]表示以第i个元素结尾的最大子段和。
状态转移方程为dp[i] = max(dp[i-1] + nums[i], nums[i])。
7. 算法实现:```pythondef maxSubArray(nums):n = len(nums)dp = [0] * ndp[0] = nums[0]max_sum = nums[0]for i in range(1, n):dp[i] = max(dp[i-1] + nums[i], nums[i])max_sum = max(max_sum, dp[i])return max_sum```8. 复杂度分析:时间复杂度为O(n),其中n为序列的长度。
空间复杂度为O(n)。
9. 测试用例:- 输入:`[3, -2, 4]`输出:`5`- 输入:`[-2, 1, -3, 4, -1, 2, 1, -5, 4]`输出:`6`10. 注意事项:- 确保输入的序列长度N大于等于1。
- 序列中的整数可以是负数或正数。
- 输出结果应该是一个整数。
11. 扩展思考:- 如何优化算法以减少空间复杂度?- 如果序列中的整数是浮点数,算法是否仍然有效?12. 参考答案:- 可以通过只使用一个变量来存储最大子段和,以及一个变量来存储当前子段和,从而将空间复杂度优化到O(1)。
- 如果序列中的整数是浮点数,算法仍然有效,但需要注意浮点数运算的精度问题。
ACM试题及参考答案

1. 给定一个矩阵M(X, Y),列集为X ,行集为Y 。
如果存在对其列的一个排序,使得每一行的元素都严格递增,称M 是一个次序保持矩阵。
例如下图中存在一个排序x 4,x 1,x 2,x 3,x 5I ⊆X ,满足:子矩阵M(I,Y)是次序保持矩阵。
[测试数据] 矩阵M :[测试数据结果] I={ x 1,x 3,x 4,x 7,x 8}[解题思路] 将该问题归约为在一个有向图中找一条最长路径的问题。
给定矩阵M=(a ij ),行集Y ,列集X ,行子集J ⊆Y ,定义有向图D A =(V A ,E A ),其中V A 含有|X|个顶点,每个顶点代表X 中的一列,如果顶点u ,v 对应的列x u ,x v 满足,对于任意的j ∈J ,u v ij ij a a <,则有一条从u 到v 的弧(u ,v )∈E 。
显然,D A 是个无环图,可以在O(|X|2)时间内构造完毕。
对于任意的条件子集J ,A(I,J)是次序保持的当且仅当对应于J 中条件的顶点在D A 中构成一条有向路径。
从而我们只需在有向图D A 中找一条最长路径,该问题可在O(|V A |+| E A |)时间内完成。
按上面的方法构造有向图如下:有向图中找最长路径的线性时间算法。
一些表示方法如下:d out (u )为顶点u 的出度,d in (u )为顶点u 的入度,source 为入度为0的顶点,sink 为出度为0的顶点,N out (u )为u 指向的邻接点集合,P uv 为从u 到v 的最长路,显然应从source 到sink 。
在每一步为每个顶点关联一个永久的或临时的标签。
v被赋了一个临时标签(v’,i v)表明在当前步,算法找出的最长的从source到v的有向路长度为i v,且经由v’而来。
v被赋了一个永久标签[v’,i v]表明从source到v的最长有向路长度为i v,且经由v’而来,通过回溯每个顶点的永久标签就可以找出最长有向路。
c acm试题及答案

c acm试题及答案ACM(Association for Computing Machinery)是计算机科学领域的国际性学术组织,旨在推动计算机科学的发展与研究。
ACM竞赛是ACM组织举办的一项计算机算法编程竞赛,每年都有数以千计的计算机专业学生参加。
这篇文章将介绍一道ACM试题,并提供解答。
题目描述:给定一个整数数组nums,其中所有元素都是非负整数,现在要求你计算nums中连续子数组的最大和,并输出该最大和。
输入:第一行输入一个整数n,表示数组长度(1 <= n <= 10^5)。
第二行输入n个整数,表示数组nums的元素(元素范围为0 <= nums[i] <= 100)。
输出:输出一个整数,表示nums中连续子数组的最大和。
示例:输入:51 2 3 4 5输出:15解释:最大和子数组为[1, 2, 3, 4, 5],和为15。
解答:首先,我们可以使用一个变量maxSum来记录当前得到的最大和,初始化为0。
同时,我们还使用一个变量sum来记录当前连续子数组的和,初始化为0。
接下来,我们对数组nums进行遍历。
对于每一个元素nums[i],我们将其加到sum中,并判断sum是否大于0。
如果sum大于0,说明当前连续子数组的和对后面的结果是有正向贡献的,我们可以继续累加后面的元素。
如果sum小于等于0,说明当前连续子数组的和对后面的结果没有正向贡献,我们可以将sum重新置为0,重新开始计算连续子数组的和。
在遍历过程中,我们不断更新maxSum的值,保证其为当前得到的最大和。
最终,遍历结束后的maxSum即为所求的最大和。
下面是具体的实现代码:```cpp#include <iostream>#include <vector>#include <algorithm>using namespace std;int maxSubArray(vector<int>& nums) { int maxSum = 0;int sum = 0;for(int i = 0; i < nums.size(); i++) { sum += nums[i];if(sum > maxSum) {maxSum = sum;}if(sum <= 0) {sum = 0;}}return maxSum;}int main() {int n;cin >> n;vector<int> nums(n);for(int i = 0; i < n; i++) {cin >> nums[i];}int result = maxSubArray(nums);cout << result << endl;return 0;}```以上就是解答c acm试题并提供相应代码的文章。
acm大赛试题及答案

acm大赛试题及答案ACM大赛试题及答案1. 题目一:字符串反转问题描述:编写一个程序,输入一个字符串,输出其反转后的字符串。
输入格式:输入包含一个字符串,字符串长度不超过100。
输出格式:输出反转后的字符串。
示例:输入:hello输出:olleh答案:```pythondef reverse_string(s):return s[::-1]input_string = input().strip()print(reverse_string(input_string))```2. 题目二:计算阶乘问题描述:编写一个程序,输入一个非负整数n,输出n的阶乘。
输入格式:输入包含一个非负整数n,n不超过20。
输出格式:输出n的阶乘。
示例:输入:5输出:120答案:```pythondef factorial(n):if n == 0:return 1else:return n * factorial(n - 1)n = int(input())print(factorial(n))```3. 题目三:寻找最大数问题描述:给定一个包含n个整数的数组,找出数组中的最大数。
输入格式:输入包含一个整数n,表示数组的大小,随后是n个整数。
输出格式:输出数组中的最大数。
示例:输入:5 1 2 3 4 5输出:5答案:```pythonn = int(input())numbers = list(map(int, input().split()))max_number = max(numbers)print(max_number)```4. 题目四:判断闰年问题描述:编写一个程序,输入一个年份,判断该年份是否为闰年。
输入格式:输入包含一个整数,表示年份。
输出格式:如果输入的年份是闰年,则输出"Yes",否则输出"No"。
示例:输入:2000输出:Yes答案:```pythonyear = int(input())if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):print("Yes")else:print("No")```5. 题目五:斐波那契数列问题描述:编写一个程序,输入一个非负整数n,输出斐波那契数列的第n项。
山东理工大学计算机专业课后测试题及答案

山东理工大学计算机专业课后测试题及答案一到三章判断1-1世界上第一台计算机于1946年诞生于美国的宾夕法尼亚大学。
(1分)T1-2世界上第一台计算机是ENIAC (1分)T1-3世界上第一台计算机于1946年诞生于美国的宾夕法尼亚大学,名字叫ENIBC。
(1分)F1-4阿兰•图灵是一位英国科学家,是一位计算机科学奠基人。
(1分)T1-5阿兰•图灵是一位美国科学家,是一位计算机科学奠基人。
(1分)F1-6美籍匈牙利数学家冯•诺依曼被称为电子计算机之父。
(1分)T1-7世界上第一台计算机ENIAC没有存储器。
(1分)T1-8世界上第一台计算机ENIAC内部采用的是十进制。
(1分)T 1-9Electronic Numerical Integrator And Calculator(简称:ENIAC)的中文含义是:电子数字积分计算机。
(1分)T 1-10信息是指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。
(1分)T1-11信息量和消息发生的概率是正比的关系,即消息发生的概率越大信息量也就越大。
(1分)F1-12信息量和消息发生的概率是相反的关系。
(1分)T1-13当一个消息是由多个独立的小消息组成时,那么这个消息所含信息量应等于各小消息所含信息量的和。
(1分)T 1-14当一个消息是由多个独立的小消息组成时,那么这个消息所含信息量应等于各小消息所含信息量的乘积。
(1分)F 1-15信息技术(Information Technology,缩写IT),是主要用于管理和处理信息所采用的各种技术的总称。
(1分)T 1-16计算机中所说的“计算”是一种广义的计算。
(1分)T1-17在计算机中,机器人设计不属于计算问题。
(1分)F1-18可计算性是指一个实际问题是否可以使用计算机来解决,一切问题都是可计算的。
(1分)F1-19人类不可以期待计算机能解决世界上所有的问题。
[山科]第一届山东省ACM竞赛题解
![[山科]第一届山东省ACM竞赛题解](https://img.taocdn.com/s3/m/4df736f54693daef5ef73d61.png)
第一届山东省ACM竞赛题解A.Phone Number简单题。
n只有1000,O(n ^ 2)判断就可以了。
B.Balloons数据结构简单题,DFS求连通分量。
注意两个式子,前者表示是4个方向连通,后者表示8个方向连通。
C.Clockwise计算几何+DP。
首先要看明白顺时针和逆时针的定义,其实按正常的理解就可以,但要注意三点共线的情况,例如下标为a<b<c 的三点构成的角180度算作顺时针,0度算作逆时针。
顺逆时针用叉积和点积判断就可以。
删掉最少点,也就是保留最多点,我们考虑顺时针的情况(逆时针相同),考虑保留下来的最后一条线段,它和它的前一条线段要构成顺时针的角才可以,所以我们使用dp[i][j](i > j)来表示最后一条线段是i,j所能保留下来的最大的珠子数,dp[i][j] = max(dp[j][k] + 1)(j > k,i、j、k 三点构成顺时针角),复杂度O(n^3)D.Shopping简单题。
最大值-最小值的二倍就是答案。
E.Emergency图论,Flody算法。
Q有100000之大,每次求两点间距离必然超时。
但是可以发现图只有300个顶点,我们只在新的顶点被标记时更新两点间的距离,分析可以发现我们可以先更新从此标记点到另外点的最短距离,再更新从另外点到此标记点的最短距离,最后再更新经过此标记点的最短距离就可以了,复杂度O(n^2),总共可能有n次标记,故总复杂度O(n^3),其它查询在O(1)内就能完成。
另外要注意的是会有重边和自环,求最短路,重边保留最小的,自环去掉就可以了。
F.Fairy tale模拟题。
读懂题目,跟着题目模拟就可以了。
需要注意的就是geometrical distance是两点间的直线距离,我理解为行和列差值的和错了一次。
定义一个状态结构,然后定义<操作符,用set判重,可以简化操作,尽量用数组存方位信息,而不是IF-ELSE。
山东理工大学信息技术基础知识题库及答案

山东理工大学信息技术基础知识题库及答案1、A:高级语言编写的程序可移植性差B:机器语言就是汇编语言,无非是名称不同而已C:指令是由一串二进制数1组成的(正确答案)D:用机器语言编写的程序可读性好下列叙述中,正确的是______。
[单选题] *2、为了避免在编辑操作过程中突然掉电造成数据丢失,应()。
[单选题] *A. 在新建文档时即保存文档B. 在打开文档时即做存盘操作C. 在编辑时每隔一段时间做一次存盘操作(正确答案)3、C:GHzD:MB把硬盘上的数据传送到计算机内存中去的操作称为______。
[单选题] *A:读盘(正确答案)B:写盘4、MAC地址英文直译为()[单选题] *A媒体存取控制位址(正确答案)B城域网地址C以太网地址D局域网地址5、在WPS文字应用程序中,要选取某个自然段,可将鼠标移到该段左侧区域()即可。
[单选题] *A.单击鼠标左键B.双击鼠标左键(正确答案)C.三击鼠标左键6、要将插入点快速移动到文档开始位置,应按()键。
[单选题] *A. Ctrl+Home(正确答案)B. Ctrl+PageUpC. Ctrl+↑7、D:按文件大小存取文件CPU中,除了内部总线和必要的寄存器外,主要的两大部件分别是运算器和______。
[单选题] *A:控制器(正确答案)B:存储器C:Cache8、在WPS文字的编辑状态,连续进行了两次"插入"操作,当单击一次"撤消"按钮()。
[单选题] *A)将两次插入的内容全部取消(B)将第一次插入的内容全部取消C)将第二次插入的内容全部取消((正确答案)9、光纤通信中使用的复用方式是()。
易[单选题] *A. 时分多路B. 空分多路C. 频分多路D. 波分多路(正确答案)10、A:控制器B:运算器C:中央处理器(正确答案)D:寄存器下列各组软件中,属于应用软件的一组是______。
[单选题] *11、电脑开机自检时,最先检查得部件为()。
acm基础试题及答案

acm基础试题及答案ACM基础试题及答案1. 以下哪个选项是C语言中正确的字符串声明方式?A. char str[] = "Hello World";B. char str[10] = "Hello World";C. string str = "Hello World";D. char str = "Hello World";答案:A2. 在C++中,以下哪个关键字用于定义类的私有成员?A. publicB. privateC. protectedD. static答案:B3. 以下哪个数据结构允许快速随机访问元素?A. 链表B. 队列C. 数组D. 栈答案:C4. 在Python中,以下哪个函数用于将列表中的元素连接成一个字符串?A. join()B. concat()C. append()D. merge()答案:A5. 在数据库管理系统中,SQL代表什么?A. Structured Query LanguageB. Standard Query LanguageC. Simple Query LanguageD. System Query Language答案:A6. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <title>C. <header>D. <h6>答案:A7. 在JavaScript中,以下哪个方法用于将字符串转换为小写?A. toUpperCase()B. toLowerCase()C. toUpperCase()D. toCamelCase()答案:B8. 在Unix/Linux系统中,哪个命令用于查看当前目录下的文件和文件夹?A. lsB. pwdC. cdD. mkdir答案:A9. 在C语言中,以下哪个函数用于计算数组中元素的总和?A. sum()B. count()C. sizeof()D. memset()答案:A10. 在Java中,以下哪个关键字用于创建单例模式?A. staticB. finalC. synchronizedD. volatile答案:A。
山东理工大学计算机操作系统试题及答案

1.( D)不是基本的操作系统。
A、批处理操作系统B、分时操作系统C、实时操作系统D、网络操作系统2.(C )不是分时系统的基本特征:A、同时性B、独立性C、实时性D、交互性3.处理器执行的指令被分成两类,其中有一类称为特权指令,它只允许(C )使用。
A、操作员B、联机用户C、操作系统D、目标程序4.当用户程序执行访管指令时,中断装置将使中央处理器(B )工作。
A、维持在目态B、从目态转换到管态C、维持在管态D、从管态转换到目态5.进程所请求的一次打印输出结束后,将使进程状态从( D)A、运行态变为就绪态B、运行态变为等待态C、就绪态变为运行态D、等待态变为就绪态6.采用动态重定位方式装入的作业,在执行中允许(C )将其移动。
A、用户有条件地B、用户无条件地C、操作系统有条件地D、操作系统无条件地7.分页式存储管理中,地址转换工作是由(A )完成的。
A、硬件B、地址转换程序C、用户程序D、装入程序8.如果允许不同用户的文件可以具有相同的文件名,通常采用( D)来保证按名存取的安全。
A、重名翻译机构B、建立索引表C、建立指针D、多级目录结构9.对记录式文件,操作系统为用户存取文件信息的最小单位是(C )。
A、字符B、数据项C、记录D、文件10.为了提高设备分配的灵活性,用户申请设备时应指定(A )号。
A、设备类相对B、设备类绝对C、相对D、绝对11.通常把通道程序的执行情况记录在(D )中。
A、PSWB、PCBC、CAWD、CSW12.作业调度是从输入井中处于( B)状态的作业中选取作业调入主存运行。
A、运行B、收容C、输入D、就绪13.一作业进入内存后,则所属该作业的进程初始时处于(C )状态。
A、运行B、等待C、就绪D、收容14.共享变量是指(D )访问的变量。
A、只能被系统进程B、只能被多个进程互斥C、只能被用户进程D、可被多个进程15.临界区是指并发进程中访问共享变量的( D)段。
A、管理信息B、信息存储C、数据D、程序16.若系统中有五台绘图仪,有多个进程均需要使用两台,规定每个进程一次仅允许申请一台,则至多允许( D)个进程参于竞争,而不会发生死锁。
山东理工大学C语言编程上机全部作业(DOC版本)

山东理工大学C语言上机作业(全部)计算球面距离第一题#include <stdio.h>#include <math.h>#define PI 3.1415926//定义常量main(){float a,b,c,s,m;scanf("%f%f%f",&a,&b,&c);//输入纬度和两个经度,规定东经为正,西经为负m=fabs(b-c);if(m<180) // 经度差小于180s=2*6371*asin(cos(PI/180*a)*sin(PI/360*m));//推出数学计算公式转换为c语言else//s=2*6371*asin(cos(PI/180*a)*sin(PI/360*(360-m)));//推出数学计算公式转换为c语言printf("距离为%f\n",s);//输出结果}/*资环学院矿物加工1101 学号1111105006 王浩林*/ /*版本VC++6.0*//*错误分析:计算公式推导出现问题*//*制作日期:2012年3月5日*//*输入数据:60 30 60*//*输出数据:距离为1653.573608*/第二题#include <stdio.h>#include <math.h>#define PI 3.1415926//定义常量main(){float a1,a2,b1,b2,m,s;scanf("%f%f%f%f",&a1,&a2,&b1,&b2);//输入纬度和两个经度,规定东经为正,西经为负m=fabs(a1-b1);if(m<180)// 经度差小于180s=6371*2*asin(sqrt(0.5*(1-sin(PI/180*a2)*sin(PI/180*b2)-cos(PI/180*a2)*cos(PI/180*b2)*cos(PI/180*m))));//推出数学计算公式转换为c语言else// 经度差大于180s=6371*2*asin(sqrt(0.5*(1-sin(PI/180*a2)*sin(PI/180*b2)-cos(PI/180*a2)*cos(PI/180*b2)*cos(PI/180*(360-m)))));//推出数学计算公式转换为c语言printf("%f\n",s);//输出结果}/*资环学院矿物加工1101 学号1111105006 王浩林*/ /*版本VC++6.0*//*错误分析:计算公式推导出现问题*//*制作日期:2012年3月5日*//*输入数据:60 30 60 60*//*输出数据:3335.847656*/贷款利息计算第一题#include <stdio.h>main(){float i,n,m,w,sum,p,q;printf("输入贷款金额(元)和期限(月)");scanf("%f%f",&p,&q); /*输入贷款金额和期限*/ m=p/q; /*计算每月还款本金*/ sum=0;for(i=1;i<=q;i++){n=(p-(i-1)*m)*0.005; /*计算每月利息*/w=m+n;printf("第%3.0f月利息为%7.2f元本金为%7.2f元\n",i,n,m);sum=sum+n; /*计算总利息*/}printf("总利息是%7.2f元\n",sum);}/*资环学院矿物加工1101 学号1111105006 王浩林*//*版本VC++6.0*//*错误分析:无*//*制作日期:2012年3月29日*//*输入数据:600000 120*//*第二题*/#include <stdio.h>#include <math.h>main(){float i,m,n,w,p,q,sum;printf("输入贷款金额(元)和贷款期限(月)");scanf("%f%f",&p,&q); /*输入贷款金额和期限*/ sum=0;w=p*0.005*pow(1.005,q)/(pow(1.005,q)-1); /*计算本息*/for(i=1;i<=q;i++){m=p*0.005*pow(1.005,i-1)/(pow(1.005,q)-1); /*计算每月还款的本金*/n=w-m; /*计算每月还款利息*/ printf("第%3.0f月的本金为%7.2f元,利息为%7.2f元\n",i,m,n);sum=sum+n; /*计算还款利息总金额*/}printf("总利息为%f元\n",sum);printf("本息为%f元",w);}/*资环学院矿物加工1101 学号1111105006 王浩林*//*版本VC++6.0*//*制作日期:2012年3月29日*//*出现错误:公式推导出现问题*//*输入数据:600000 120*/打印日历第一题#include <stdio.h>main(){int a[6][7],i,j,y,m,n,d,w,p,days;printf("请输入年月:");scanf("%d%d",&y,&m);n=1;i=0;p=0;while(i<(y-1)) /*用循环累加月份*/{i=i+1;if((i%4==0)&&(i%100!=0)||(i%400==0)) /*月份累加*/p=p+1;}if((y%4==0)&&(y%100!=0)||(y%400==0)) /* 用实验二程序计算某年某月的一号是星期几*/ {{if(m==1)d=(y-1)*365+p+n;if(d%7==0)w=7;elsew=d%7;}{if(m==2)d=(y-1)*365+p+n+31;if(d%7==0)w=7;elsew=d%7;}{if(m==3) /* 用实验二程序计算某年某月的一号是星期几*/ d=(y-1)*365+p+n+31+29;if(d%7==0)w=7;elsew=d%7;}{if(m==4)d=(y-1)*365+p+n+31+29+31;if(d%7==0)w=7;elsew=d%7;}{if(m==5) /* 用实验二程序计算某年某月的一号是星期几*/d=(y-1)*365+p+n+31+29+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==6)d=(y-1)*365+p+n+31+29+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==7)d=(y-1)*365+p+n+31+29+31+30+31+30;if(d%7==0)w=7;elsew=d%7;} /* 用实验二程序计算某年某月的一号是星期几*/{if(m==8)d=(y-1)*365+p+n+31+29+31+30+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==9)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31;if(d%7==0)w=7;elsew=d%7;}{if(m==10)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==11)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30+31; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}{if(m==12)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30+31+30;if(d%7==0)w=7;elsew=d%7;}}else{{if(m==1)d=(y-1)*365+p+n;if(d%7==0)w=7;elsew=d%7;}{if(m==2)d=(y-1)*365+p+n+31;if(d%7==0)w=7;elsew=d%7;}{if(m==3)d=(y-1)*365+p+n+31+28; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}{if(m==4)d=(y-1)*365+p+n+31+28+31;if(d%7==0)w=7;elsew=d%7;}{if(m==5)d=(y-1)*365+p+n+31+28+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==6)d=(y-1)*365+p+n+31+28+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==7)d=(y-1)*365+p+n+31+28+31+30+31+30; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}{if(m==8)d=(y-1)*365+p+n+31+28+31+30+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==9)d=(y-1)*365+p+n+31+28+31+30+31+30+31+31;if(d%7==0)w=7;elsew=d%7;}{if(m==10)d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30;if(d%7==0)w=7;elsew=d%7;} /* 用实验二程序计算某年某月的一号是星期几*/{if(m==11)d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==12)d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30+31+30;if(d%7==0)w=7; /* 用实验二程序计算某年某月的一号是星期几*/elsew=d%7;}}if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)days=31;if(m==4||m==6||m==9||m==11)days=30;if(m==2){if((y%4==0)&&(y%100!=0)||(y%400==0))days=29;elsedays=28;};printf(" 公元%d年%d月,大吉大利,恭喜发财",y,m);printf("\n");printf("\n");printf("\n");printf(" 星期日星期一星期二星期三星期四星期五星期六");/*打印输出的设计*/ printf("\n");for(i=0;i<=5;i++){for(j=0;j<=6;j++){if(w%7<j+1){a[i][j]=1+j-w%7+7*i;if(a[i][j]<=days)printf("%9d",a[i][j]);}else{a[i][j]=7-w%7+7*(i-1)+j+1; /*利用二维数组计算*/if(a[i][j]<=0)printf(" ");if(a[i][j]<=days&&a[i][j]>0)printf("%9d",a[i][j]);} /*打印出日历*/}printf("\n");}}/*姓名:王浩林学号:1111105006 学院:资环学院班级:矿物加工1101应用版本:VC++6.0出现的错误:在时间推算和重新定义i的值时出现了很多问题,而且这次的语法错误减少了很多,在打印数组时和数组分析也出现很多问题制作日期:2012年4月12号上午9点22分*//*输入数据:2012 1 *//*输出数据:请输入年月:20121公元2012年1月,大吉大利,恭喜发财第二题#include <stdio.h>main(){int a[6][7],i,j,y,m,n,d,w,p,days;printf("(*^__^*)请输入年:");scanf("%d",&y); /*输入某一年*/m=0;while(m<=11) /*用循环累加月份*/{m++; /*月份累加*/p=0;n=0;for(i=0;i<(y-1);i++) /* 用实验二程序计算某年某月的一号是星期几*/ {if((i%4==0)&&(i%100!=0)||(i%400==0))p=p+1;}if((y%4==0)&&(y%100!=0)||(y%400==0)){{if(m==1)d=(y-1)*365+p+n;if(d%7==0)w=7;elsew=d%7;}{if(m==2)d=(y-1)*365+p+n+31;if(d%7==0) /* 用实验二程序计算某年某月的一号是星期几*/w=7;elsew=d%7;}{if(m==3)d=(y-1)*365+p+n+31+29;if(d%7==0)w=7;elsew=d%7;} /* 用实验二程序计算某年某月的一号是星期几*/{if(m==4)d=(y-1)*365+p+n+31+29+31;if(d%7==0)w=7;elsew=d%7;}{if(m==5)d=(y-1)*365+p+n+31+29+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==6)d=(y-1)*365+p+n+31+29+31+30+31; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}{if(m==7)d=(y-1)*365+p+n+31+29+31+30+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==8)d=(y-1)*365+p+n+31+29+31+30+31+30+31; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}{if(m==9)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31;if(d%7==0)w=7;elsew=d%7;}{if(m==10)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==11)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==12)d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30+31+30; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}}else{{if(m==1)d=(y-1)*365+p+n;if(d%7==0)w=7;elsew=d%7;}{if(m==2)d=(y-1)*365+p+n+31;if(d%7==0)w=7;elsew=d%7;}{if(m==3)d=(y-1)*365+p+n+31+28;if(d%7==0)w=7;elsew=d%7;}{if(m==4)d=(y-1)*365+p+n+31+28+31;if(d%7==0) /* 用实验二程序计算某年某月的一号是星期几*/w=7;elsew=d%7;}{if(m==5)d=(y-1)*365+p+n+31+28+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==6)d=(y-1)*365+p+n+31+28+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==7)d=(y-1)*365+p+n+31+28+31+30+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==8)d=(y-1)*365+p+n+31+28+31+30+31+30+31; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}{if(m==9)d=(y-1)*365+p+n+31+28+31+30+31+30+31+31;if(d%7==0)w=7;elsew=d%7;}{if(m==10)d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==11) /* 用实验二程序计算某年某月的一号是星期几*/d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==12)d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30+31+30; /* 用实验二程序计算某年某月的一号是星期几*/if(d%7==0)w=7;elsew=d%7;}}/*把一年时间分为12月并定义每月的天数*/if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)days=31;if(m==4||m==6||m==9||m==11)days=30;if(m==2){if((y%4==0)&&(y%100!=0)||(y%400==0))days=29;elsedays=28;};printf(" O(∩_∩)O 公元%d年%d月,大吉大利,恭喜发财",y,m); /*打印输出的设计*/printf("\n");printf("\n");printf("\n");printf(" 星期日星期一星期二星期三星期四星期五星期六");printf("\n");for(i=0;i<=5;i++) /*利用二维数组计算*/{for(j=0;j<=6;j++){if(w%7<j+1){a[i][j]=1+j-w%7+7*i;if(a[i][j]<=days)printf("%9d",a[i][j]);}else{a[i][j]=7-w%7+7*(i-1)+j+1;if(a[i][j]<=0)printf(" ");if(a[i][j]<=days&&a[i][j]>0)printf("%9d",a[i][j]);} /*打印出日历*/}printf("\n");}}}/*姓名:王浩林学号:1111105006 学院:资环学院班级:矿物加工1101应用版本:VC++6.0出现的错误:在时间推算和重新定义i的值时出现了很多问题,而且这次的语法错误减少了很多,在打印数组时和数组分析也出现很多问题制作日期:2012年4月12号上午9点22分*//*输入数据:2012*//*输出数据:(*^__^*)请输入年:2012日期计算第一题#include <stdio.h>main(){int i,n,d,y,m;printf("请输入公元几年:");scanf("%d",&y); /*输入年份*/i=0;n=0;while(i<(y-1)) /*利用循环计算闰年的个数*/{i=i+1;if((i%4==0)&&(i%100!=0)||(i%400==0)) /*判断是否符合闰年条件*/n=n+1;}d=(y-1)*365+n+1; /*计算天数*/if(d%7==0) /*计算星期几*/m=7;elsem=d%7;printf("公元1年1月1日距该年1月1日有:%d天,星期%d\n",d,m);/*输出结果*/}/*制作日期2012-3-15*//*制作版本VC++6.0*//*制作人:王浩林,矿物1101,资环学院,学号1111105006*//*制作中的错误:数学推导过程考虑不全,语法应用部熟练*//*输入数据样本:2012—1—1,输出数据样本:734503天,星期7*//*输入数据样本:2012—3—15,输出数据样本:734577天,星期4*/第二题#include <stdio.h>main(){int y,m,n,d,w,i,p;printf("请输入年月日:");scanf("%d%d%d",&y,&m,&n); /*输入Y年M月N日*/i=0;p=0;while(i<(y-1)) /*由循环体算出闰年的个数*/ {i=i+1;if((i%4==0)&&(i%100!=0)||(i%400==0))p=p+1;} /*P为闰年个数*/if((y%4==0)&&(y%100!=0)||(y%400==0)) /*当Y年为闰年时*/{{if(m==1) /*一月的天数和星期情况*/d=(y-1)*365+p+n;if(d%7==0)w=7;elsew=d%7;}{if(m==2) /*二月的天数和星期情况*/ d=(y-1)*365+p+n+31;if(d%7==0)w=7;elsew=d%7;}{if(m==3) /*三月的天数和星期情况*/ d=(y-1)*365+p+n+31+29;if(d%7==0)w=7;elsew=d%7;} /*四月的天数和星期情况*/ {if(m==4)d=(y-1)*365+p+n+31+29+31;if(d%7==0)w=7;elsew=d%7;}{if(m==5) /*五月的天数和星期情况*/d=(y-1)*365+p+n+31+29+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==6) /*六月的天数和星期情况*/ d=(y-1)*365+p+n+31+29+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==7) /*七月的天数和星期情况*/d=(y-1)*365+p+n+31+29+31+30+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==8) /*八月的天数和星期情况*/d=(y-1)*365+p+n+31+29+31+30+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==9) /*九月的天数和星期情况*/ d=(y-1)*365+p+n+31+29+31+30+31+30+31+31;if(d%7==0)w=7;elsew=d%7;}{if(m==10) /*十月的天数和星期情况*/ d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==11) /*十一月的天数和星期情况*/ d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==12) /*十二月的天数和星期情况*/ d=(y-1)*365+p+n+31+29+31+30+31+30+31+31+30+31+30;if(d%7==0)w=7;else /*Y不是闰年时*/w=d%7;}}else{{if(m==1) /*一月的天数和星期情况*/ d=(y-1)*365+p+n;if(d%7==0)w=7;elsew=d%7;}{if(m==2) /*二月的天数和星期情况*/ d=(y-1)*365+p+n+31;if(d%7==0)w=7;elsew=d%7;}{if(m==3) /*三月的天数和星期情况*/ d=(y-1)*365+p+n+31+28;if(d%7==0)w=7;elsew=d%7;}{if(m==4) /*四月的天数和星期情况*/ d=(y-1)*365+p+n+31+28+31;if(d%7==0)w=7;elsew=d%7;}{if(m==5) /*五月的天数和星期情况*/ d=(y-1)*365+p+n+31+28+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==6) /*六月的天数和星期情况*/ d=(y-1)*365+p+n+31+28+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==7) /*七月的天数和星期情况*/d=(y-1)*365+p+n+31+28+31+30+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==8) /*八月的天数和星期情况*/ d=(y-1)*365+p+n+31+28+31+30+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==9) /*九月的天数和星期情况*/ d=(y-1)*365+p+n+31+28+31+30+31+30+31+31;if(d%7==0)w=7;elsew=d%7;}{if(m==10) /*十月的天数和星期情况*/ d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30;if(d%7==0)w=7;elsew=d%7;}{if(m==11) /*十一月的天数和星期情况*/ d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30+31;if(d%7==0)w=7;elsew=d%7;}{if(m==12) /*十二月的天数和星期情况*/d=(y-1)*365+p+n+31+28+31+30+31+30+31+31+30+31+30;if(d%7==0)w=7;elsew=d%7;}}printf("该日期距公元1年1月1日的天数:%d和星期%d\n",d,w); /*输出天数和星期*/}/*制作日期2012-3-15*//*制作版本VC++6.0*//*制作人:王浩林,矿物1101,资环学院,学号1111105006*//*制作中的错误:数学推导过程考虑不全,语法应用部熟练*//*输入数据样本:2012—1—1,输出数据样本:734503天,星期7*//*输入数据样本:2012—3—15,输出数据样本:734577天,星期4*//*输入数据:2012 3 21*//*输出数据:请输入年月日:2012321该日期距公元1年1月1日的天数:734583和星期3Press any key to continue*/大小写转换第一题(不带小数的)#include<stdio.h>#include<math.h>main(){int i,n,a[100],r,t,m,p;char dx[10][3]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},k[13][4]={"元","拾","百","千","万","拾","百","千","亿"};printf("请输入一个数\n");scanf("%d",&n);i=0;while(1){ if(n==0)break; //计数和分离完成跳出a[i]=n%10; //最低位存入a[i]i++;n=n/10; //去掉一个最低位}printf("转换为大写金额为:\n");while(1){ t=a[--i]; //利用循环依次递减输出一位数组printf("%s",dx[t]); /*输出大写*/printf("%s",k[i]); /*输出单位*/if(i==0){printf("\n");break;}//满足条件跳出循环}}/*姓名:王浩林学号:1111105006 班级:矿物1101 */ /*出现错误:在调试中单位的对应很难调好*//*使用版本:VC++6.0*//*输入数据:120*//*输出数据:转换为大写金额为:壹百贰拾零元*//*制作日期:2012年5月24日*/第二题(含小数的)#include<stdio.h>#include<math.h>main(){int i,n,a[100],t;float w;char dx[10][3]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"},k[13][3]={"分","角","元","拾","百","千","万","拾","百","千","亿"};printf("请输入一个至多两位小数的数:\n");scanf("%f",&w);n=w*100;i=0;while(1){ if(n==0)break; //计数和分离完成跳出a[i]=n%10; //最低位存入a[i]i++;n=n/10; //去掉一个最低位}printf("转换为大写金额为:\n");while(1) /*利用循环依次递减输出*/{ t=a[--i];printf("%s",dx[t]); /*输出大写*/printf("%s",k[i]); /*输出单位*/if(i==0){printf("\n");break;} //满足条件跳出循环}}/*姓名:王浩林学号:1111105006 班级:矿物1101 */ /*出现错误:在调试中单位的对应很难调好*//*使用版本:VC++6.0*//*输入数据:120.58*//*输出数据:壹百贰拾零元伍角捌分*//*制作日期:2012年5月24日*/。
山东理工试题及答案

山东理工试题及答案一、选择题(每题2分,共20分)1. 计算机中,CPU代表什么?A. 中央处理器B. 中央存储器C. 计算机输出设备D. 计算机输入设备答案:A2. 下列哪个是山东理工大学的简称?A. SDUTB. SDUTSC. SDUD. SHU答案:A3. 以下哪个选项不是山东理工大学的学院?A. 机械工程学院B. 电气工程学院C. 经济管理学院D. 艺术设计学院答案:D4. 在山东理工大学,哪个专业是国家级特色专业?A. 机械设计制造及其自动化B. 电气工程及其自动化C. 计算机科学与技术D. 以上都是答案:D5. 山东理工大学的校训是什么?A. 厚德、博学、笃行、创新B. 求实、创新、团结、奋进C. 厚德、博学、求实、创新D. 笃行、创新、团结、奋进答案:C6. 山东理工大学位于哪个城市?A. 济南B. 青岛C. 烟台D. 淄博答案:D7. 下列哪个不是山东理工大学的校级组织?A. 学生会B. 社团联合会C. 学生科技协会D. 学生志愿者协会答案:C8. 山东理工大学的图书馆藏书量是多少?A. 150万册B. 200万册C. 250万册D. 300万册答案:B9. 山东理工大学的校歌名称是什么?A. 理工之歌B. 理工之光C. 理工之梦D. 理工之魂答案:B10. 山东理工大学的校庆日是哪一天?A. 5月15日B. 6月15日C. 7月15日D. 8月15日答案:A二、填空题(每题2分,共20分)1. 山东理工大学的校徽以______色为主色调。
答案:蓝2. 山东理工大学的校训是“______”。
答案:厚德、博学、笃行、创新3. 山东理工大学的校庆日是每年的______月______日。
答案:6,154. 山东理工大学的校歌名称是______。
答案:理工之光5. 山东理工大学的图书馆藏书量超过______万册。
答案:2006. 山东理工大学的简称是______。
答案:SDUT7. 山东理工大学的校级组织包括学生会、社团联合会、______等。
acm考试题目及答案

acm考试题目及答案1. 题目:给定一个整数数组,找出数组中没有出现的最小的正整数。
答案:首先,我们可以遍历数组,将每个元素与它的索引对应起来,即如果数组中存在数字`i`,则将其与索引`i-1`对应。
然后,我们可以遍历数组,检查索引`i`是否与数组中第`i`个元素相等。
如果不相等,则索引`i`对应的值就是没有出现的最小正整数。
如果所有元素都与其索引对应,则没有出现的最小正整数为数组长度加1。
2. 题目:实现一个函数,检查一个链表是否为回文结构。
答案:我们可以将链表的前半部分反转,然后比较反转后的前半部分与后半部分是否相同。
如果相同,则链表是回文的;如果不相同,则不是。
具体步骤如下:首先找到链表的中点,然后反转前半部分链表,接着比较反转后的前半部分与后半部分是否相同,最后将前半部分链表再次反转回来。
3. 题目:给定一个只包含 '(' 和 ')' 的字符串,判断字符串是否有效。
答案:我们可以使用一个栈来解决这个问题。
遍历字符串中的每个字符,如果遇到'(',则将其压入栈中;如果遇到')',则检查栈是否为空,如果为空,则字符串无效;如果不为空,则弹出栈顶元素。
遍历结束后,如果栈为空,则字符串有效;如果栈不为空,则字符串无效。
4. 题目:找出一个无序数组中第k大的元素。
答案:我们可以使用快速选择算法来解决这个问题。
首先,选择一个元素作为基准,然后将数组分为两部分:一部分是大于基准的元素,另一部分是小于基准的元素。
根据基准的位置,我们可以确定第k大的元素是在基准的左边还是右边,然后递归地在相应的部分中寻找第k大的元素。
重复这个过程,直到找到第k大的元素。
5. 题目:给定一个字符串,找出其中不含有重复字符的最长子串的长度。
答案:我们可以使用滑动窗口的方法来解决这个问题。
维护一个窗口,记录窗口内字符的出现情况。
遍历字符串,如果遇到重复的字符,则移动窗口的左边界,直到窗口内没有重复的字符。
acm竞赛试题及答案

acm竞赛试题及答案ACM竞赛试题及答案1. 问题描述给定一个整数数组,找出数组中最长的连续子数组,使得该子数组的和至少为给定的整数S。
如果不存在这样的子数组,则返回-1。
2. 输入格式输入包含两行,第一行包含两个整数n和S(1≤n≤10^5,1≤S≤10^9),分别表示数组的长度和子数组的最小和。
第二行包含n 个整数,表示数组的元素。
3. 输出格式输出一个整数,表示最长的连续子数组的长度。
如果不存在满足条件的子数组,则输出-1。
4. 样例输入```5 151 2 3 7 5```5. 样例输出```3```6. 试题分析本题要求找出数组中和至少为S的最长连续子数组。
可以通过滑动窗口的方法来解决。
首先,初始化两个指针left和right,分别表示子数组的左右边界。
同时,维护一个变量sum来记录当前子数组的和。
遍历数组,当sum小于S时,将right指针向右移动,并将对应的元素值加到sum上;当sum大于等于S时,尝试将left指针向右移动,减小sum的值,同时更新最长子数组的长度。
最后,如果未找到满足条件的子数组,则返回-1。
7. 答案```pythondef longest_subarray(n, S, arr):left = 0sum = 0max_len = 0for right in range(n):sum += arr[right]while sum >= S:max_len = max(max_len, right - left + 1)sum -= arr[left]left += 1return max_len if max_len > 0 else -1# 样例输入n, S = map(int, input().split())arr = list(map(int, input().split()))# 样例输出print(longest_subarray(n, S, arr))```8. 注意事项在实现过程中,需要注意边界条件的处理,例如当整个数组的和都小于S时,应该返回-1。
acm编程例题 参考答案

acm编程例题参考答案ACM编程例题参考答案ACM(Advanced Computer Mathematics)是一种面向计算机科学与技术的竞赛形式,旨在提高参与者的编程技能和解决问题的能力。
ACM编程例题是指在ACM竞赛中出现的一系列编程题目,这些题目涵盖了各种算法和数据结构的应用。
本文将给出一些ACM编程例题的参考答案,希望能够帮助读者更好地理解和掌握这些题目的解法。
一、题目一:最大公约数题目描述:给定两个正整数a和b,求它们的最大公约数。
解题思路:最大公约数可以通过欧几里得算法来求解。
该算法的基本思想是,两个正整数的最大公约数等于其中较小的数和两数之差的最大公约数。
具体的实现可以使用递归或循环的方式。
代码示例:```c++int gcd(int a, int b) {if (b == 0) {return a;}return gcd(b, a % b);}```二、题目二:素数判断题目描述:给定一个正整数n,判断它是否为素数。
解题思路:素数是只能被1和自身整除的正整数。
判断一个数是否为素数可以使用试除法,即从2开始,依次判断n是否能被2到sqrt(n)之间的数整除。
如果存在能整除n的数,则n不是素数;否则,n是素数。
代码示例:```c++bool isPrime(int n) {if (n <= 1) {return false;}for (int i = 2; i * i <= n; i++) {if (n % i == 0) {return false;}}return true;}```三、题目三:字符串反转题目描述:给定一个字符串s,将其反转后输出。
解题思路:字符串反转可以通过将字符串的首尾字符依次交换来实现。
可以使用双指针的方式,一个指针指向字符串的首字符,另一个指针指向字符串的尾字符,然后交换两个指针所指向的字符,并向中间移动,直到两个指针相遇。
代码示例:```c++void reverseString(string& s) {int left = 0;int right = s.length() - 1;while (left < right) {swap(s[left], s[right]);left++;right--;}}```四、题目四:二分查找题目描述:给定一个有序数组和一个目标值,使用二分查找算法在数组中找到目标值的索引,如果目标值不存在,则返回-1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东理工大学ACM平台题目答案1464#include<stdio.h>#include<stdlib.h>struct node{int date;struct node *next;};struct node *creat(struct node *head,int m){int i;struct node *p,*tail;head->next=NULL;tail=head;for(i=1;i<=m;i++){p=(struct node*)malloc(sizeof(struct node));scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head;}struct node *del(struct node *head,int z,int r) {struct node *q,*p;int i=0;p=head;while(p->next!=NULL){if((p->next->date>=z)&&(p->next->date<=r)){i=1;break;}else p=p->next;}if(i==1){q=p->next;p->next=q->next;free(q);return p;}else return 0;}void show(struct node *head){struct node *y;y=head->next;while(y!=NULL){if(y->next!=NULL)printf("%d ",y->date);if(y->next==NULL)printf("%d",y->date);y=y->next;}printf("\n");}int main(){int n,v,n1,n2,n3,i;struct node *head,*q;scanf("%d",&n1);for(i=0;i<n1;i++){v=0;head=(struct node*)malloc(sizeof(struct node));scanf("%d %d %d",&n,&n2,&n3);getchar();creat(head,n);q=head;while(q!=NULL){q=del(q,n2,n3);++v;}if(v-1==n)printf("-1\n");elseshow(head);free(q);free(head);}return 0;}1138#include<stdio.h>#include<stdlib.h>struct node{int date;struct node *next;};struct node *creat(struct node *head,int m){int i;struct node *p,*tail;head->next=NULL;tail=head;for(i=1;i<=m;i++){p=(struct node*)malloc(sizeof(struct node));scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head;}struct node *del(struct node *head,int z){struct node *q,*p;int i=0;p=head;while(p->next!=NULL){if(p->next->date==z){i=1;break;}else p=p->next;}if(i==1){q=p->next;p->next=q->next;free(q);return p;}else return 0;}void show(struct node *head){struct node *y;y=head->next;while(y!=NULL){if(y->next!=NULL)printf("%d ",y->date);if(y->next==NULL)printf("%d",y->date);y=y->next;}printf("\n");}int main(){int n,k,v=0;struct node *head,*q;head=(struct node*)malloc(sizeof(struct node));scanf("%d",&n);creat(head,n);scanf("%d",&k);printf("%d\n",n);show(head);q=head;while(q!=NULL){q=del(q,k);++v;}printf("%d\n",n-v+1);show(head);return 0;}1605#include<stdio.h>#include<string.h>void show(char c,int a,int b) {if(c=='+')printf("%d\n",a+b);else if(c=='-')printf("%d\n",a-b);else if(c=='*')printf("%d\n",a*b);else if(c=='/'&&b!=0)printf("%.2lf\n",1.0*a/b); }int main(){int n,a[1000],b[1000],i;char c[1000];while(scanf("%d",&n)!=EOF){getchar();for(i=0;i<n;i++){scanf("%c %d %d",&c[i],&a[i],&b[i]);getchar();}for(i=0;i<n;i++){show(c[i],a[i],b[i]);}}return 0;}1606#include<stdio.h>int f(int m){int p;if(m==0)p=7;if(m==1)p=11;if(m>1)p=f(m-1)+f(m-2);return p;}int main(){int n,m;while(scanf("%d",&n)!=EOF){m=f(n);if(m%3==0)printf("yes\n");elseprintf("no\n");}return 0;}1608#include<stdio.h>#include<stdlib.h>int main(){int n,m,i,j,k;int *a;scanf("%d %d",&n,&k);a=(int *)malloc(n*sizeof(int));for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++){if(a[j]<a[j+1]){m=a[j];a[j]=a[j+1];a[j+1]=m;} }for(i=0;i<k;i++){if(i<k-1)printf("%d ",a[i]);else printf("%d\n",a[i]);}return 0;}1607#include<stdio.h>#include<stdlib.h>int main(){int n,a,b,i;int *x;while(scanf("%d %d %d",&a,&b,&n)!=EOF&&(a||b||n)) {x=(int *)malloc(n*sizeof(int));x[0]=1;x[1]=1;for(i=2;i<n;i++){x[i]=(a*x[i-1]+b*x[i-2])%7;}printf("%d\n",x[n-1]);free(x);}return 0;}1634#include<stdio.h>int f(int k){int i,j;for(i=2;i<k;i++){if(k%i==0){j=i;break;}}return j;}int show(int a){int i;for(i=2;i<a-1;i++)if(a%i==0)return 0;return 1;}int main(){int n,m,i,k;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&m);k=m;if(show(m))printf("%d",m);if(!show(m)){while(!show(k)){printf("%d*",f(k));k=k/f(k);}printf("%d",k);}printf("\n");}return 0;}2119#include<stdio.h>#include<stdlib.h>struct node{int date;struct node *next;};struct node * creat(int n){struct node *p,*head1,*tail;head1=(struct node*)malloc(sizeof(struct node));int i;head1->next=NULL;tail=head1;for(i=1;i<=n;i++){p=(struct node*)malloc(sizeof(struct node));scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head1;}struct node * built(int m){struct node *q,*head2,*end;head2=(struct node*)malloc(sizeof(struct node));int j;head2->next=NULL;end=head2;for(j=1;j<=m;j++){q=(struct node *)malloc(sizeof(struct node));scanf("%d",&q->date);q->next=NULL;end->next=q;end=q;}return head2;}struct node * merge(struct node *head1,struct node *head2) {struct node *p,*q,*tail;p=head1->next;q=head2->next;tail=head1;free(head2);while(p&&q){if(p->date<q->date){tail->next=p;tail=p;p=p->next;}else{tail->next=q;tail=q;q=q->next;}}if(p)tail->next=p;elsetail->next=q;return head1;}void show(struct node *head1) {struct node *p;p=head1->next;while(p!=NULL){if(p->next!=NULL)printf("%d ",p->date);elseprintf("%d\n",p->date);p=p->next;}}int main(){struct node *head1,*head2;int n,m;scanf("%d %d",&n,&m);head1=creat(n);head2=built(m);head1=merge(head1,head2);show(head1);return 0;}2120#include<stdio.h>#include<stdlib.h>int c=0;int v=0;struct node{int date;struct node *next;};struct node *creat(int n){struct node *head1,*p,*tail;int i;head1=(struct node *)malloc(sizeof(struct node));head1->next=NULL;tail=head1;for(i=1;i<=n;i++){p=(struct node *)malloc(sizeof(struct node));scanf("%d",&p->date);p->next=NULL;tail->next=p;tail=p;}return head1;}struct node *split(struct node *head1){struct node *head2,*p,*q,*tail,*end;head2=(struct node *)malloc(sizeof(struct node));head2->next=NULL;end=head2;p=head1->next;head1->next=NULL;tail=head1;q=p->next;while(p!=NULL){if(p->date%2!=0){p->next=NULL;tail->next=p;tail=p;c++;}else{p->next=NULL;end->next=p;end=p;v++;}p=q;if(q!=NULL)q=q->next;}return head2;}void show(struct node *head1,struct node *head2) {struct node *p,*q;p=head2->next;q=head1->next;while(p!=NULL){if(p->next!=NULL)printf("%d ",p->date);elseprintf("%d\n",p->date);p=p->next;}while(q!=NULL){if(q->next!=NULL)printf("%d ",q->date);elseprintf("%d\n",q->date);q=q->next;}}int main(){int n;struct node *head1,*head2;scanf("%d",&n);head1=creat(n);head2=split(head1);printf("%d %d\n",v,c);show(head1,head2);return 0;}2187#include<stdio.h>#include<string.h>int main(){char a[100000],b[100000];int i,j,k,m,v,c,n;while(scanf("%s %s",a,b)!=EOF) {n=0;getchar();k=strlen(a);j=strlen(b);c=0;for(i=0;i<k;i++){v=0;m=n;for(;m<j;){if(a[i]-b[m]==0){n=m;v=1;n=n+1;break;}else m++;}if(v==1)c++;}if(c==k)printf("Yes\n");else printf("No\n");}return 0;}2761#include<stdio.h>#include<string.h>int main(){int m,j,k,i,c[10000],v;char a[10000];while(scanf("%s",a)!=EOF){getchar();k=strlen(a);m=0;for(i=0;i<k;){c[m]=0;v=0;for(j=i;;j++){if(a[i]-a[j]==0){c[m]++;++v;}if(a[i]-a[j]!=0){break;}}if(c[m]==1)printf("%c",a[i]);if(c[m]>1)printf("%d%c",c[m],a[i]);i=i+v;m++;}printf("\n");}return 0;}2765#include<stdio.h>int main(){int n,m,i;long a[100];while(scanf("%d %d",&n,&m)!=EOF){for(i=1;i<m;i++){a[i]=i;}for(i=m;i<=n;i++)a[i]=a[i-m+1]+a[i-1];printf("%ld\n",a[n]);}return 0;}2773#include<stdio.h>int main(){int n,m,i,k;scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&m);if(m<150)k=m;else if(m>150&&m<200)k=m-150;else if(m>200&&m<300)k=m-200;else if(m>300&&(m%100>0)&&(m%100<50)) k=m%100;else if(m>300&&(m%100>50)&&(m%100<100)) k=m%100-50;elsek=0;printf("%d\n",k);}return 0;}2560#include<stdio.h>#include<string.h>int main(){int i,j,k,n;char a[100000],b[100000],c[5];strcpy(c,"2013");while(gets(a)!=NULL){if(strcmp(a,c)==0)break;k=strlen(a);j=0;for(i=0;i<k;i++){if(a[i]!=' '){b[j]=a[i];j++;}}n=0;for(i=0,k=j-1;i<k;i++,k--){if(b[i]==b[k])n++;}if(n==j/2)printf("YES\n");else printf("NO\n");}return 0;}1916#include<stdio.h>#include<string.h>int main(){int n,j,k,i,m,v,h;char a[1000],b[100000];scanf("%d",&n);getchar();for(i=0;i<n;i++){scanf("%s",a);getchar();h=strlen(a);k=0;for(j=0;j<h;j++){if(a[j]=='-'&&(a[j-1]>='0'&&a[j-1]<='9'&&a[j+1]<='9'&&a[ j+1]>='0')&&(a[j+1]-a[j-1]>=0)){for(m=j;m<j+a[j+1]-a[j-1]-1;m++){b[k]=a[j-1]+(m-j+1);k++;}}elseif(a[j]=='-'&&(a[j-1]>='a'&&a[j-1]<='z'&&a[j+1]<='z'&&a[j+1 ]>='a')&&(a[j+1]-a[j-1]>=0)){for(m=j;m<j+a[j+1]-a[j-1]-1;m++){b[k]=a[j-1]+(m-j+1);k++;}}elseif(a[j]=='-'&&(a[j-1]>='A'&&a[j-1]<='Z'&&a[j+1]<='Z'&&a[j+1 ]>='A')&&(a[j+1]-a[j-1]>=0)){for(m=j;m<j+a[j+1]-a[j-1]-1;m++){b[k]=a[j-1]+(m-j+1);k++;}}else{b[k]=a[j];k++;}}for(v=0;v<k;v++)printf("%c",b[v]);printf("\n");}return 0;}2085#include<stdio.h>#include<string.h>int main(){int n,m,j,i,k,h,i1,i2,v;char a[20][201],t;scanf("%d",&n);getchar();for(i=0;i<n;i++){gets(a[i]);k=strlen(a[i]);for(j=0,h=k-1;j<h;j++,h--){t=a[i][j];a[i][j]=a[i][h];a[i][h]=t;}a[i][k]=' ';m=0;v=0;for(j=0;j<=k;j++){if(a[i][j]==' '){m=j;for(i1=v,i2=m-1;i1<i2;i2--,i1++){t=a[i][i1];a[i][i1]=a[i][i2];a[i][i2]=t;}v=m+1;}}printf("Case %d:",i+1);for(h=0;h<k;h++)printf("%c",a[i][h]);printf("\n");}return 0;}1568#include<stdio.h>#include<string.h>int main(){int n,j,k,m,i,v,h;char a[20][20];scanf("%d %d",&n,&m);getchar();for(i=0;i<n;i++){gets(a[i]);}for(i=0;i<n;i++){k=0;for(j=0;j<m;j++){if(a[i][j]=='1')++k;}if(k==m){for(h=i;h>0;h--)strcpy(a[h],a[h-1]);for(v=0;v<m;v++)a[0][v]='0';}}for(i=0;i<n;i++){for(j=0;j<m;j++)printf("%c",a[i][j]);printf("\n");}return 0;}1594#include<stdio.h>#include<string.h>int main(){int m,n,i,j;char a[20][20],b[20][20];scanf("%d %d",&n,&m);getchar();for(i=0;i<n;i++){gets(a[i]);}for(i=0;i<n;i++)for(j=0;j<m;j++){b[j][i]=a[i][j];}for(i=0;i<m;i++)for(j=n-1;j>=0;j--){printf("%c",b[i][j]);}printf("\n");}return 0;}2809#include<stdio.h>#include<math.h>int show(int a){int i;for(i=2;i<=sqrt(a);i++)if(a%i==0)return 0;return 1;}int main(){int m,i;while(scanf("%d",&m)!=EOF&&(m||m)){for(i=2;i<m;i++){if(show(i)&&show(m-i)){printf("%d = %d + %d\n",m,i,m-i);break;}}return 0;}2109#include<stdio.h>#include<algorithm>using namespace std;long a[1000004];int main(){int n,i;scanf("%d",&n);for(i=0;i<n;i++){scanf("%ld",&a[i]);}sort(a,a+n);reverse(a,a+n);for(i=0;i<n;i++){if(i<n-1)printf("%ld ",a[i]);if(i==n-1)printf("%ld\n",a[i]);}return 0;}2765#include<stdio.h>int main(){int n,i;long a[21];while(scanf("%d",&n)!=EOF){a[1]=0;a[2]=1;for(i=3;i<=n;i++)a[i]=(n-1)*(a[i-1]+a[i-2]);printf("%ld\n",a[n]);}return 0;}2521#include<stdio.h>int main(){int n, i, j, max, c, x;long long a[1000];while(scanf("%d", &n)!=EOF){max = -1;c = 0;for(i = 0; i < n; i++){scanf("%d", &a[i]);}for(i = 0; i < n; i++){x = 0;for(j = i + 1; j < n; j++){if(a[i] == a[j])x++;}if(max < x){max = x;c = i;}else if(max == x){if(a[c] > a[i]){c = i;}}else max = max;}printf("%lld %d\n", a[c], max+1); }return 0;}2801#include<stdio.h>int main(){int n,m,i,c,t,j;while(scanf("%d %d",&n,&m)!=EOF){int a[10000],b[10000];int g[100000]={0};c=0;for(i=0;i<m;i++){scanf("%d %d",&a[i],&b[i]);if(a[i]>b[i]){t=a[i];a[i]=b[i];b[i]=t;}}for(i=0;i<m-1;i++){for(j=i+1;j<m;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;t=b[i];b[i]=b[j];b[j]=t;}}}if(a[0]!=0)printf("0\n");else{g[b[0]]=1;for(i=0;i<m;i++){if(g[a[i]]==1)g[b[i]]=1;else if(g[b[i]]==1)g[a[i]]=1;}for(i=1;i<n;i++){if(g[i]==1){c++;}}printf("%d\n",c);}}return 0;}2747#include<stdio.h>#include<string.h>char a[81],c[81];int main(){int j,m,i,h,n,v;while(scanf("%s",a)!=EOF){getchar();m=-1;n=strlen(a);for(i=0;i<n;i++){v=0;if(n%(i+1)==0){h=0;for(j=0;j<n;j++){c[j]=a[h];if(h==i)h=0;else h++;}c[n]='\0';if(strcmp(a,c)==0){v=i;break;}}}for(i=0;i<=v;i++)printf("%c",a[i]);printf("\n");}return 0;}2398#include<stdio.h>#include<string.h>struct node{int q;char p[1000];}a[10000],b[10000],c[10000]; int main(){struct node d;int n,m,x,j,i,o;int k,n2;while(scanf("%d",&n)!=EOF){int n1[10000];for(o=0;o<n;o++){scanf("%d %d",&m,&x);for(i=0;i<m;i++){scanf("%s %d",a[i].p,&a[i].q);}for(j=m;j<x+m;j++){a[j].q=0;scanf("%s %d",a[j].p,&n1[j]);for(k=0;k<n1[j];k++){scanf("%s",c[k].p);for(i=0;i<m+x;i++)if(strcmp(c[k].p,a[i].p)==0)a[j].q=a[j].q+a[i].q;}}scanf("%d",&n2);for(i=0;i<n2;i++){scanf("%s",b[i].p);}for(i=0;i<n2;i++)for(j=0;j<m+x;j++){if(strcmp(b[i].p,a[j].p)==0){b[i].q=a[j].q;}}for(i=0;i<n2-1;i++)for(j=i+1;j<n2;j++){if(b[i].q>b[j].q){d=b[i];b[i]=b[j];b[j]=d;}}for(i=0;i<n2;i++){printf("%s\n",b[i].p);}printf("\n");}printf("\n");}return 0;}1227#include<stdio.h>int main(){int n,m,j,i,k,c;int a[100001],b[100001];scanf("%d %d",&n,&m);for(i=0;i<n;i++)scanf("%d",&a[i]);for(j=0;j<m;j++)scanf("%d",&b[j]);c=0;k=-1;for(i=0;i<n;i++){for(j=0;j<m;j++){if(a[i]==b[j]&&k<j){k=j;c++;break;}}}printf("%d\n",c);return 0;}2046#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int main(){char a[202],b[202];int c[202]={0};int n,m,k,i;scanf("%s %s",a,b);getchar();n=strlen(a);m=strlen(b);reverse(a,a+n);reverse(b,b+m);if(n>m){k=n;for(i=0;i<m;i++){if(c[i]+a[i]+b[i]-96<10)c[i]=(a[i]+b[i]-96+c[i]);else if(c[i]+a[i]+b[i]-96>=10){c[i]=(a[i]+b[i]-96+c[i])%10;c[i+1]=1;}}if(c[m]==0)for(i=m;i<n;i++)c[i]=a[i]-48;if(c[m]==1)for(i=m;i<n;i++){if(c[i]+a[i]-48>=10){c[i]=(a[i]+c[i]-48)%10;c[i+1]=1;}elsec[i]=a[i]-48+c[i];}}else if(n<m){k=m;for(i=0;i<n;i++){if(c[i]+a[i]+b[i]-96<10)c[i]=(a[i]+b[i]-96+c[i]);else if(c[i]+a[i]+b[i]-96>=10){c[i]=(a[i]+b[i]-96+c[i])%10;c[i+1]=1;}}if(c[n]==0)for(i=n;i<m;i++)c[i]=b[i]-48;else if(c[n]==1)for(i=n;i<m;i++){if(c[i]+b[i]-48>=10){c[i]=(b[i]+c[i]-48)%10;c[i+1]=1;}elsec[i]=b[i]-48+c[i];}}else if(n==m){k=n;for(i=0;i<m;i++){if(c[i]+a[i]+b[i]-96<10)c[i]=(a[i]+b[i]-96+c[i]);else if(c[i]+a[i]+b[i]-96>=10){c[i]=(a[i]+b[i]-96+c[i])%10;c[i+1]=1;}}}if(c[k]==0){reverse(c,c+k);for(i=0;i<k;i++)printf("%d",c[i]);}if(c[k]==1){reverse(c,c+k+1);for(i=0;i<=k;i++)printf("%d",c[i]);}printf("\n");return 0;}2074#include<stdio.h>#include<algorithm>using namespace std;int main(){int n,m,i;while(scanf("%d %d",&n,&m)!=EOF){int a[300],b[300];for(i=0;i<n;i++)scanf("%d",&a[i]);if(n<=m){printf("%d\n",n);}else{sort(a,a+n);for(i=1;i<n;i++){b[i-1]=a[i]-a[i-1]-1;}sort(b,b+n-1);int k=a[n-1]-a[0]+1;int nline=1;int devide=n-2;while((nline<m)&&(b[devide]>0)){nline++;k=k-b[devide];devide--;}printf("%d\n",k);}}return 0;}1299#include<stdio.h>int main(){int n,m,j,i;int a[1001],b[1001];scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);b[1]=1;for(i=2;i<=n;i++){m=0;for(j=1;j<i;j++)if(a[i]>a[j])if(m<b[j])m=b[j];b[i]=m+1;}int c=-1;for(i=1;i<=n;i++){if(c<b[i])c=b[i];}printf("%d\n",c);return 0;}1730#include<stdio.h>int main(){int n,m,j,i,k;int a[110][110],b[110][110];scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=i;j++)scanf("%d",&a[i][j]);for(i=1;i<=n;i++)b[n][i]=a[n][i];for(i=n;i>1;i--){for(j=1;j<i;j++)if(b[i][j]>b[i][j+1])b[i-1][j]=b[i][j]+a[i-1][j];elseb[i-1][j]=b[i][j+1]+a[i-1][j];}printf("%d\n",b[1][1]);return 0;}1491#include<stdio.h>#include<string.h>struct node{char a[11];};int main(){char b[22],d[22],y[22];struct node c[10001];int n,m,i;while(scanf("%d",&n)!=EOF&&(n||n)){m=0;for(i=0;i<n;i++)scanf("%s",&c[i].a);scanf("%s",b);scanf("%s",d);strcpy(y,b);strcat(b,d);strcat(d,y);for(i=0;i<n;i++)if(strcmp(c[i].a,b)==0||strcmp(c[i].a,d)==0){m=1;break;}if(m==1)printf("yes\n");elseprintf("No\n");}return 0;}。