随笔分类 - ACM
一些面试及ACM算法题目
摘要:题目本身属于简单题,但是注意在输出的时候,题目很变态的对格式做了很多要求:1.输入的N与下面的block有一个空行2.每次输出与下一个输入的block有一个空行3.但是特别注意,当是最后一个输出时不需要输出空行见代码:#include #include void invert(char *a){ int l=strlen(a); for(int i=0,j=l-1;i=lt) strcpy(result,sum(result,t)); else strcpy(result,sum(t,result))...
阅读全文
摘要:这道题简单的翻译成纯数学语言就是给你n个数字,每次运算只能是加1或者减1,问经过最短几步可以使得n个数字相等由于题目限定了n个数字一定有平均数,所以求出avg,将所有比其大的数字或者比其小的数字的差加起来就是步数见代码:#include int main(){ int n,h[50],s=1; while(scanf("%d",&n)!=EOF&&n) { int i,sum=0,avg,result=0; for(i=0;i<n;i++) { scanf("%d",&h[i]); sum+...
阅读全文
摘要:水题不解释#include #include int main(){ int i=1,flag=0; double a,b,c; while(scanf("%lf%lf%lf",&a,&b,&c)!=EOF&&a||b||c) { printf("Triangle #%d\n",i++); if(a==-1) { if(b>=c) flag=-1; else { a=sqrt(c*c-b*...
阅读全文
摘要:水题不解释,就是注意下格式,没输出一行字符串记得加一个空白行#include #include int main(){ int n,i=1; char str[55]; scanf("%d",&n); while(i<=n) { scanf("%s",str); int len=strlen(str); for(int j=0;j<len;j++) { if(str[j]!='Z') str[j]+=1; else ...
阅读全文
摘要:#include int main(){ double table[100001]; double t=2.0; table[1]=0.5; for(int i=2;i<100001;i++) { t+=2; table[i]=table[i-1]+1.0/t; } printf("# Cards Overhang\n"); int n; while(scanf("%d",&n)!=EOF) { printf("%5d%10.3lf\n",n,table[n]); } ...
阅读全文
摘要:一道简单题,简单的20进制加减法,我这里代码写的不够优美,还是可以有所改进,不过简单题懒得改了。。。#include #include int invert(char c){ if(clen2) { for(;i=0;i--) printf("%c",a1[i]); printf("\n"); } return 0;}
阅读全文
摘要:题目:这道题目的意思让人猛地一读有点反应不过来,简单解释下:给定序列A:a1,a2,a3....,an,如果iaj则(ai,aj)称为序列A的一个倒置。之后引出了序列的倒置表(主要这里有点不好理解),即由序列A可以得到序列B:b1,b2,b3...,bn,序列B满足在第J个上的数据bj表示所有在A序列中与j可以形成倒置的个数。例如:题目给出的序列A:5,9,1,8,2,6,4,7,3则其倒置表为:2 3 6 4 0 2 2 1 0;这里倒置表的第一个数据是2,则表示在序列A中与1形成倒置的有两个即:(5,1) (9,1),以此类推。。。问题:下面题目的问题有两种,即:1.给定原有序列计算倒置表
阅读全文
摘要:水题记录:注:此题题目并没有限定数值的大小,所以要用字符串进行处理#include #include int main(){ char n[1001]; while(scanf("%s",n)!=EOF&&strcmp(n,"0")) { int len=strlen(n); int sum=0; for(int i=0;i=10) { int tmp=0; while(sum) { t...
阅读全文
摘要:属于水题,主要是涉及到回文问题。 这里标注下进制转换的方法: while(n){ p[i]=n%basis; n/=basis; }见代码:#include int revert(int n,int base){ int p[20]; int i=0; while(n) { p[i++]=n%base; n/=base; } int ispar=1; for(int j=0,k=i-1;j<k;j++,k--) { if(p[j]!=p[k]) { ispar=0; break; } } return ispar;}int main(){ int n...
阅读全文
摘要:放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵。。。今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题:#include #include int main(){ char cText[1000]; char start[10]; char end[5]; while(scanf("%s",start)!=EOF&&strcmp(start,"ENDOFINPUT")!=0) { getchar(); gets(cText); scanf("%s",end)
阅读全文
摘要:这道题目最让人头疼的就是该题的input怎么结束,因为它要求输入一个空行的时候则一串字符串输入结束,这就不得不让人绕个弯来解决这个问题。(注:本人习惯于使用C中的字符串操作,但是用到map要求使用string所以小绕弯)#include #include #include #include #include #include using namespace std;int main(){ map dic; map::iterator iter; char teng[15],tfm[15]; char tmp[25]; int n=0; while(gets(tmp)) { if(!strcm.
阅读全文
摘要:这道题目很简单,考察的就是结构体数组的应用,直接贴代码了#include #include typedef struct color{ int r; int g; int b;}color;double distance(color c1,color c2){ return sqrt(pow((c1.b-c2.b),2)+pow((c1.g-c2.g),2)+pow((c1.r-c2.r),2));}int equal(color c1,color c2){ if(c1.r==c2.r&&c1.g==c2.g&&c1.b==c2.b) return 1; els
阅读全文
摘要:这道题目说白了是一道平面几何的数学问题,重在理解题目的意思:题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为x轴,平分半圆为y轴,建立如下图的坐标系问题:给出坐标点(y>0),让你判断在那一年这个坐标点会被淹没。解决方案:我们可以转换成的数学模型是来比较坐标点到原点的距离与半圆半径的大小即可知道该点是否被淹没,公式如下:1.由于每年半圆面积增长50平方英里,可得半径递推公式R2=sqrt(100/pi+R1*R1) 注:初始R1设置为0,则把最开始情况包括进去。2.计算机坐标到原点的距离,就是勾股定
阅读全文
摘要:我承认这是一道水的不能再水的题,今天一下就做到了,还是无耻的帖上来吧#include int main(){ double sum=0; for(int i=1;i<13;i++) { double tmp=0; scanf("%lf",&tmp); sum+=tmp; } printf("$%.2lf\n",sum/12); return 0;}
阅读全文
摘要:#include int main(){ float c; int i; while(scanf("%f",&c)!=EOF&&c) { float sum=0; for(i=2;sum<c;i++) { sum+=(1.0/i); } printf("%d card(s)\n",i-2); } return 0;} 简单不多说了
阅读全文
摘要:今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算:比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A #include int main(){ int k,ccode[80]; char ptext[80],ctext[80]; while(scanf("%d",&k)!=EOF&&k) { scanf("%s",ctext); int n=0; while(ctext[n]!='\0') { if(ctext[n]=='....
阅读全文
摘要:ZOJ ACM题集,编译环境VC6.0#include int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF) { printf("%d\n",a+b); } return 0;}
阅读全文

浙公网安备 33010602011771号