摘要: 这道题目我一开始一头雾水,怎么都数不对,参考了下网上的博文,才弄懂。题意是这样的,如果是上升序列,上升序列的长度不是所有上升数字的,是这么规定的,如果它与前一个数字构成上升,那么这个数字算上长度。所以说,比如1 2 3 4 5 ,这个长度为4。(这里感觉蛮奇怪的,理解了这里就基本ok了),举个例子:1 2 3 2 3 4 5,上升序列有1 2 3 , 2 3 4 5 ,长度为2 + 3 = 5,个数为2,所以输出5.0/2.0 = 2.5如果有重复数字,比如4 4 4 3 3 3 3 ,那么这整个是下降序列;再如4 4 4 3 3 3 4 ,则前6个是下降,后俩是上升。见ac代码#includ 阅读全文
posted @ 2013-10-06 16:43 xlturing 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 这道题目的关键在于怎么求两个整数的最大公约数,这里正好复习一下以前的知识,如下:1.设整数a和b2.如果a和b都为0,则二者的最大公约数不存在3.如果a或b等于0,则二者的最大公约数为非0的一个4.如果b不为0,则使得a=a,b=a%b,转到2重复执行实现的递归代码如下:int gcb(int a,int b){ if(b==0) return a; else return gcb(b,a%b); }注:这个算法的证明这里简单说明下:1.设g为a和b的公约数2.则存在m和k使得 a=g*m b=g*k3.同时利用b可表示a a=b*l+r (其中r为... 阅读全文
posted @ 2013-10-05 23:43 xlturing 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 这道题目不难,是一道简单的进制转换问题,但是发现了自己两个遗漏的知识点:1.关于scanf(1)scanf函数在输入时是以回车或者空格作为一次输入的结束(2)scanf函数在输入字符串的过程中是不吸纳空格的,而且如果输入是整数或者浮点数,前面的空格对输入没有影响,如下: char s1[100],s2[100]; int a,b; scanf("%s%s%d%d",s1,s2,a,b); printf("%s%s%d%d",s1,s2);如上面这段代码,如果给定输入为:" ACM ACM 1 2 "则输出为:"ACMACM1 阅读全文
posted @ 2013-10-04 20:52 xlturing 阅读(456) 评论(0) 推荐(0) 编辑
摘要: zju对时间要求比较高,这就要求我们不能简单地暴力求解(三个循环搞定),就要换个思路:因为在循环时,已知a,确定b,c,d,在外重两层循环中已经给定了b和c,我们就不用遍历d,我们可以利用d^3=a^3-b^3-c^3来判断这个d。看代码:#include #include int main(){ for(int n=2;nresult) break; double t=result-ai-bj; double ck=pow(t,1.0/3.0); ... 阅读全文
posted @ 2013-09-28 22:07 xlturing 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 题目本身属于简单题,但是注意在输出的时候,题目很变态的对格式做了很多要求: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))... 阅读全文
posted @ 2013-09-26 10:29 xlturing 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 这道题简单的翻译成纯数学语言就是给你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+... 阅读全文
posted @ 2013-09-24 21:51 xlturing 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 水题不解释#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*... 阅读全文
posted @ 2013-09-23 22:46 xlturing 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 水题不解释,就是注意下格式,没输出一行字符串记得加一个空白行#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 ... 阅读全文
posted @ 2013-09-21 21:42 xlturing 阅读(379) 评论(0) 推荐(0) 编辑
摘要: #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]); } ... 阅读全文
posted @ 2013-09-17 22:50 xlturing 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 一道简单题,简单的20进制加减法,我这里代码写的不够优美,还是可以有所改进,不过简单题懒得改了。。。#include #include int invert(char c){ if(clen2) { for(;i=0;i--) printf("%c",a1[i]); printf("\n"); } return 0;} 阅读全文
posted @ 2013-09-16 16:43 xlturing 阅读(336) 评论(0) 推荐(0) 编辑