随笔 - 684  文章 - 0  评论 - 156  阅读 - 399万
11 2012 档案
杭电2074
摘要:杭电2074你妈这破题说实话真够恶心的了!!!此题的思路大致如下:先判断在最开始输入的两个字符的关系,即谁在中心,谁在边沿,然后运用两个循环语句判断输出的字符,,并将其保存在2维数组中,因为,通过观察不难发现,此图是上线对称的,那么你先解决,上盘部分,然后下半部分,输出保存的2维数组,就ok了!!!具体分析还请看代码!!!此题要AC注意以下几点!!!1)每个测试实例建有一个空格!!最后一个例子没有空格!!2)当n=1时,只能输出中间图案,且没有他的前后没有空格,并且在最后输出换行!!例如当你输入 1 A B的时候,你应输出 A(A的前后都没有空格) (换行)3)最你好运吧!!!哎!!#incl 阅读全文
posted @ 2012-11-28 20:21 @ 小浩 阅读(591) 评论(0) 推荐(0) 编辑
关于c++中如何调整输出格式的讲解!!!
摘要:c++中的输出格式显然要比c中的简单的多了!!!呵呵!!首先要在头文件中加入#include<iomanip>然后就是setw(int n)要输出的字符串的长度,具体例子见下面!!!#include<iostream>#include<iomanip>using namespace std;int main(){ double a=123.456;int b=789;cout<<right<<setw(10)<<a<<endl;//输出结果的前面有3个空格,因为123.456有7位,而且是右对齐的所以就在前面有 阅读全文
posted @ 2012-11-26 21:02 @ 小浩 阅读(1381) 评论(0) 推荐(0) 编辑
杭电2093
摘要:此题应用了结构体数组,给人的感觉有点像贪心,但事实上比贪心简单多了哈!!!此题的思路跟贪心的问题差不太多!!具体说明见程序!!关于sort()函数的讲解请参考:http://www.cnblogs.com/xiohao/archive/2012/11/05/2755183.html关于memeset()函数的讲解请参考: http://www.cnblogs.com/xiohao/archive/2012/11/04/2752225.html这里不做过多的说明!!!#include<iostream>#include<algorithm>#include<ioma 阅读全文
posted @ 2012-11-26 21:02 @ 小浩 阅读(399) 评论(0) 推荐(0) 编辑
大整数加法(高精度)
摘要:对于一些超过100位的大整数,我们不可能直接去计算,否者将超出编译器的规定范围而出错!!!所以,你只能利用字符串数组的知识来解这样的题,呵呵呵!!!不多说了,下面看程序吧!!哈#include<iostream>#include<cstring>using namespace std;int main(){ int Num[105][105];char num[105];int answer[105];int i,j,k,l,m,c,s;int N;cin>>N;//N 代表有N个测试实例!!!while(N--){ getchar(); memset(Nu 阅读全文
posted @ 2012-11-26 18:36 @ 小浩 阅读(234) 评论(0) 推荐(0) 编辑
杭电2034
摘要:此题也是一道简单的程序应用题!!!关于sort函数的讲解请参考:http://www.cnblogs.com/xiohao/archive/2012/11/05/2755183.html有人么有太多好说的,注意以下格式,NULL后面没有空格,此外每个数的后面都跟了一个空格!!!祝你成功AC!!!#include<iostream>#include<algorithm>using namespace std;int main(){int n,m,A[101],B[101],C[101],i,j,k,l,count,data;while(cin>>n>&g 阅读全文
posted @ 2012-11-22 12:27 @ 小浩 阅读(389) 评论(0) 推荐(0) 编辑
杭电2015
摘要:所实话此题那倒是不难,就是题的格式让人闹心,再没输出一个数后就输出一个空格,最后一个数没有空格!!!最后在加一个换行就ok了!!呵呵呵!!!祝你成功AC!!!#include<iostream>using namespace std;int main(){int n,m,i,j,aver,sum,k,space;while(cin>>n>>m){ space=0;//用来判断是否输出空格;j=2;for(i=1;i<=n/m;i++){aver=0,sum=0;for(k=0;k<m;j+=2,k++)sum+=j; aver=sum/m; if 阅读全文
posted @ 2012-11-22 11:41 @ 小浩 阅读(308) 评论(0) 推荐(0) 编辑
杭电2053
摘要:此题的题意是:The initial condition : 0 0 0 0 0 …After the first operation : 1 1 1 1 1 …After the second operation : 1 0 1 0 1 …After the third operation : 1 0 0 0 1 …After the fourth operation : 1 0 0 1 1 …After the fifth operation : 1 0 0 1 0 …先把这些灯标上号,1 2 3 4 5 6 7 8 ……无穷首先全是关的,也就是全是0第一次操作 ,标号是1的倍数,全都变成 阅读全文
posted @ 2012-11-22 10:57 @ 小浩 阅读(296) 评论(0) 推荐(0) 编辑
关于大整数n!的问题!
摘要:对于一个整数n,当n超过30之后,n!将会是一个比较大的数,而longlong类型将不能存储下这么大的数·,这是你只能用到高精度的知识,运用数组来存放这些数,呵呵!!看看下面的例子吧!!这是一道求1000!的例子,希望能对你有帮助!!!!#include<iostream>using namespace std;int main(){int n;int num[50001],c;int k; while(cin>>n){ memset(num,0,sizeof(num));//用0初始化!num[0]=1;for(int i=1;i<=n;i++){ c 阅读全文
posted @ 2012-11-22 09:43 @ 小浩 阅读(265) 评论(0) 推荐(0) 编辑
杭电1108
摘要:没有什么好说的,简单的acm题!!!注意在输入之之后,先判断一下n和m的大小!!!呵呵!祝你成功AC!!!#include<iostream>using namespace std;int main(){int n,m,i;while(cin>>n>>m){ if(n>m){int temp;temp=n;n=m;m=temp;}for(i=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;cout<<i<<endl;}return 0;} 阅读全文
posted @ 2012-11-20 20:38 @ 小浩 阅读(227) 评论(0) 推荐(0) 编辑
nefu17
摘要:#include<iostream>using namespace std;int max(int data1,int data2){return data1>data2?data1:data2;}int N;int data[101][101];int Data[101][101]; int main(){ while(cin>>N){ for(int i=0;i<N;i++)for(int j=0;j<=i;j++){ cin>>data[i][j]; if(i==0)Data[i][j]=data[i][j]; else Data[i 阅读全文
posted @ 2012-11-20 20:05 @ 小浩 阅读(136) 评论(0) 推荐(0) 编辑
杭电2089
摘要:#include<iostream>#include<cstring>using namespace std;char ch[20];bool shu[1000010];void jishu(){ int i; for(i=1;i<=1000010;i++) { itoa(i,ch,10); if((strstr(ch,"62")!=NULL)||(strstr(ch,"4")!=NULL)) shu[i]=false; else shu[i]=true; }}int main(){ int a,b; jishu(); wh 阅读全文
posted @ 2012-11-20 19:17 @ 小浩 阅读(354) 评论(0) 推荐(0) 编辑
关于递归调用和递推的简单讲解
摘要:递归说白了,就是从后向前推导,直到找到确定的值才终止查找,然后在从查找到的结果往后推,求出你所要求的值!!递推就是从已知直接向后推,直到找到你要的结果后才终止!!下面我用两个简单的例子来说明他们俩的区别:求n!的值?递归#include<iostream>using namespace std;int main(){__int64 f(int m);int n;while(cin>>n){printf("%I64d\n",f(n));}return 0;}递推代码:#include<iostream>using namespace std 阅读全文
posted @ 2012-11-20 19:15 @ 小浩 阅读(293) 评论(0) 推荐(0) 编辑
关于set容器的简单讲解!!!
摘要:set容器就是一个简单的栈,将输入的数据压入栈中,并且保证每个数据元素都不重复!!set容器的应用例子如下(仅供参考):#include<string> #include<set> #include<iostream> using namespace std; int main() { set<string> strset; set<string>::iterator si; strset.insert("cantaloupes"); strset.insert("apple"); strset 阅读全文
posted @ 2012-11-19 14:17 @ 小浩 阅读(361) 评论(0) 推荐(0) 编辑
nefu20
摘要:最简单的递推不解释!!!呵呵!!#include<iostream>#include<algorithm>using namespace std;int n,f[20][20];int CrossRoad(int L,int W){ if(f[L][W]!=-1) return f[L][W];int result;if(L==0||W==0) result=1; else result=CrossRoad(L-1,W)+CrossRoad(L,W-1); f[L][W]=result; return f[L][W];}int main(){while(cin>& 阅读全文
posted @ 2012-11-15 21:00 @ 小浩 阅读(149) 评论(0) 推荐(0) 编辑
杭电2094
摘要:此题也是一道技巧题,最好不要设数组,因为那样的话会比较麻烦!!!还有可能超时!!呵呵!这道题用到了set()容器,它的主要作用就是把n个不同的数或者字母按一定顺序没有重复的放到一个容器中,我的感觉它就是一个栈,不管那么多了,看程序吧!哈!思路:这个可以用set容器来做,每输入一场比赛都将两个名字放入入总的容器中,将失败的人insert入失败的容器中,如果能分出胜负,那总的容器的长度=失败的容器+1;因为胜者是不会进入失败的容器的!!关于set容器的用法可以参考:http://www.cnblogs.com/xiohao/archive/2012/11/19/2772195.html#inclu 阅读全文
posted @ 2012-11-15 20:21 @ 小浩 阅读(255) 评论(0) 推荐(0) 编辑
杭电1050
摘要:#include<iostream>#include<algorithm>using namespace std;int T,N,temp;struct desk{ int From;int To;int jihao;}data[505];bool cmp(const desk &a,const desk &b){if(a.From==b.From) return a.To<b.To;else return a.From<b.From;}int main(){ cin>>T; while(T--) { cin>>N; 阅读全文
posted @ 2012-11-15 17:41 @ 小浩 阅读(302) 评论(0) 推荐(0) 编辑
杭电1051
摘要:此题依然是一道贪心的问题!!!思路大致如下:首先将输入的n个数按长度进行排序,当然用sort()函数了!哈!接着再用两个for循环一个一个的查找,当找到一个元素的时候,就做一个标记,令data[i].jihao=1;关于函数memset()的讲解请参考:http://www.cnblogs.com/xiohao/admin/EditPosts.aspx?postid=2752225&update=1关于函数sort()函数的讲解请参考:http://www.cnblogs.com/xiohao/admin/EditPosts.aspx?postid=2755183&update 阅读全文
posted @ 2012-11-15 15:29 @ 小浩 阅读(378) 评论(0) 推荐(0) 编辑
有关异或符号'^'在c++编程中的应用的讲解!!!
摘要:异或门符号'^',在编程中的使用,有的时候能够让你的程序更加精炼简捷,尤其在C++的acm程序应用中,可以避免许多麻烦!!!它的几个简单作用讲解如下:它的简单规则是相同为0,不同为1,例如int a=3=011(2进制,在计算机中的存储形式);int b=6=110(2进制,在计算机中的存储形式);int c=a^b=101=5;切忌,在异或门的计算中都是应用的2进制!!任何数和0异或都等于它本身;两个相同的数异或后的结果是0;1)实现两个数的交换 a=a^b; b=a^b;//b=a^b^b=a^0=a; a=a^b;//a=a^a^b=0^b=b;应用例子如下:#inclu 阅读全文
posted @ 2012-11-15 09:04 @ 小浩 阅读(12896) 评论(0) 推荐(2) 编辑
杭电2095
摘要:此题还可以吧!!!就是注意一下,不能用常规方法,也就是说不能建立数组,因为当数组的大小超过1000000时,编译器就无法运行了!!!此题的正确思路如下:只要有相同的数那么他们异或后的结果就是0,最后就剩下0和那个独一无二的数相异或,就等于那个独一无二的数了!!在程序中用到了异或的方法,其中有关异或门的讲解请参考:http://www.cnblogs.com/xiohao/archive/2012/11/15/2770920.html祝你成功AC!!#include<iostream>using namespace std;int main(){ int n,i,x,y; while 阅读全文
posted @ 2012-11-15 08:36 @ 小浩 阅读(447) 评论(0) 推荐(0) 编辑
杭电2098
摘要:此题是一道简单的程序应用题!!!注意如何求1~10000之间的素数即可!!!同时本题我使用了打表的方法,至于不打表的话会不会超时,我也没有测试,感兴趣的话!!你何以不打表试验一下!!哈!!最后祝你成功ac!!!#include<iostream>using namespace std;int data[10005];void f(){data[2]=1; for(int i=3;i<=10000;i++){ int k=0; for(int j=2;j<i;j++) if(i%j==0) { data[i]=0; k=1; break; } if(k==0) data[ 阅读全文
posted @ 2012-11-13 11:02 @ 小浩 阅读(280) 评论(0) 推荐(0) 编辑
杭电2096
摘要:此题还是一道简单的程序应用题!!!此题注意一下,先对每个输入的A和B对100求一下余数,否者的话,当A和B取很大的值的时候他们的和就有可能超出int类型,这时你在对100取余,你就将得到错误的结果,当然跟无法AC了!!!哈哈!!!祝你好运!!!#include<iostream>using namespace std;int main(){int T;int A,B;cin>>T;while(T--){ cin>>A>>B;cout<<(A%100+B%100)%100<<endl;}return 0;} 阅读全文
posted @ 2012-11-13 11:01 @ 小浩 阅读(212) 评论(0) 推荐(0) 编辑
杭电2097
摘要:此题也是一道简单的应用题,也没有什么太多难的!!!废话不多说,直接ac了!!!哈哈哈!!!**注关于进制转换请参考杭电2031!!!#include<iostream>using namespace std;int main(){int n;while(cin>>n&&n!=0){ int a=n/1000+n/100%10+n/10%10+n%10; int i=n,j=n;; int b=0,c=0; while(i>0) { b+=i%16; i=i/16; } while(j>0) {c+=j%12; j=j/12; } if(a== 阅读全文
posted @ 2012-11-12 21:13 @ 小浩 阅读(199) 评论(0) 推荐(0) 编辑
杭电2099
摘要:此题的思路还是比较简单的啊!!就是得注意一下格式,否者的话还是无法AC!!呵呵!思路就不多讲了,下面讲一下格式,1)你需要注意一下每个可能的情况之间有一个空格,最后一个没有空格!!!2)你需要注意但求得的后两位数是0~9时,你的输出格式应该是00,01,02~08,09.否者你就无法AC了!!呵呵!最后,祝你成功AC!!呵呵!#include<iostream>using namespace std;int main(){int a,b;while(cin>>a>>b){if(a==0&&b==0)break;for(int i=a*100, 阅读全文
posted @ 2012-11-12 20:01 @ 小浩 阅读(340) 评论(0) 推荐(0) 编辑
杭电2092
摘要:此题也不是什么难题!!思路如下;要想判断此方程组有无整数解,只要将他们联立化成一元2次方程组,然后判断√(n*n-4*n8m)是否有小数即可轻松AC!!呵呵!!!注意一下格式就ok了!!最后祝你成功ac!!!#include<iostream>#include<cmath>using namespace std;int main(){int n,m;while(cin>>n>>m){if(m==0&&n==0)break; float a=sqrt(n*n-4*m); if(int(a)==a) printf("Yes\ 阅读全文
posted @ 2012-11-12 19:22 @ 小浩 阅读(335) 评论(0) 推荐(0) 编辑
852753
摘要:说实话!这题真的很恶心,hdu竟然认为是这是热身题,服了!!哎!!这也能叫热身题?好了,废话不多说,下面讲一下此题的方法:这道题你只能用打表的方法否者肯定超时,哎!!解决这道题我它有两种方法,但实际上也差不多,就是在统计的时候用了不同的方法!!方法一:#include<iostream>#include<cstring>using namespace std;bool shu[1000010];void jishu(){ int i; for(i=1;i<=1000010;i++){ for(int j=i;j>0;j/=10) if(j%100==62|| 阅读全文
posted @ 2012-11-12 18:54 @ 小浩 阅读(301) 评论(0) 推荐(0) 编辑
杭电2090
摘要:此题就是一道令人无法琢磨的题!哎!!我简直就无语了!!呵呵!竟然能出这题。。。。废话少说,直接ac!!!*** 此题要想输出结果,还需要注意一下!在linux下,EOF好像是就是ctrl+d在windows下是敲一下ctrl+z,然后按一下换行即enter,然后再按一下ctrl+z,最后敲enter即得结果!***#include<iostream>using namespace std;int main(){char a[100];double b,c,sum; sum=0;while(scanf("%s",a)!=EOF){ cin>>b> 阅读全文
posted @ 2012-11-06 21:22 @ 小浩 阅读(267) 评论(0) 推荐(0) 编辑
杭电1009
摘要:此题仍然是一道典型贪心问题,先将javabean和猫食的比例算出来,然后将他们排序,最后再依次求出最佳值即可!!呵呵!也没有太多好说的,关于函数sort()的讲解请参考:http://www.cnblogs.com/xiohao/archive/2012/11/05/2755183.htmlac吧!!!呵呵!!!#include<iostream>#include<algorithm>using namespace std;struct sa{double a1;double a2;double m;}a[1001];bool cmp(const sa &a,c 阅读全文
posted @ 2012-11-06 12:02 @ 小浩 阅读(404) 评论(0) 推荐(0) 编辑
杭电2037
摘要:此题是一道典型的贪心问题呵呵!!!首先将输入的数据对结束时间进行排序,然后开始依次统计即可!!!呵呵!关于sort()函数的讲解请参考:http://www.cnblogs.com/xiohao/archive/2012/11/05/2755183.html剩下的也就没有什么好说的了哈!!!ac吧!!#include<iostream>#include<algorithm>using namespace std; struct TV{int start;int end;} date[101]; bool cmp(const TV &a,const TV & 阅读全文
posted @ 2012-11-06 11:12 @ 小浩 阅读(249) 评论(0) 推荐(0) 编辑
杭电2091
摘要:此题是一道简单的程序应用题!!注意一下格式,每个三角形之间有一个空行,最后也个三角形没有空行!!!否则为无法ac!!没有什么太多好说的!!!注意一下规律,就ok了!!!对了,不管你用的是什么规律,只要能ac!!,你就成功了!呵呵!#include<iostream>using namespace std;int main(){int n,i,j,k=0; char m;while(cin>>m&&m!='@'){ cin>>n; if(k!=0) cout<<endl; for(i=n;i>1;i--) { 阅读全文
posted @ 2012-11-05 21:03 @ 小浩 阅读(374) 评论(0) 推荐(0) 编辑
杭电2013
摘要:此题是一道递归调用题的典型例子!!!应用的是倒推原理!!!关于递归调用的讲解请参考http://www.cnblogs.com/xiohao/archive/2012/10/15/2724965.html最后祝你成功Ac!!!呵呵!#include<iostream>using namespace std;int main(){ int n,sum; int f(int m); while(cin>>n) {sum=f(n);printf("%d\n",sum); } return 0;}int f(int m){if(m==1) return 1; 阅读全文
posted @ 2012-11-05 18:04 @ 小浩 阅读(240) 评论(0) 推荐(0) 编辑
杭电1021
摘要:此题还是一道规律题,不能直接算!!!否则将超时!!呵呵!先观察计算出前30项如下:1 2 0 2 2 1 0 1 1 2 0 2 2 1 0 1.......规律出来了!哈!那还等什么,直接ac掉!!!#include<iostream>using namespace std;int main(){ int n,i,a[]={1,2,0,2,2,1,0,1}; while(cin>>n) { i=n%8; if(a[i]==0)cout<<"yes"<<endl;else cout<<"no"& 阅读全文
posted @ 2012-11-05 18:01 @ 小浩 阅读(295) 评论(0) 推荐(0) 编辑
杭电1005
摘要:此题也是一道观察规律的问题!!!不可能直接算,否这肯定超时!呵呵!!先假设a=3,b=4,那么结果是:0,4,5,3,1,1;呵呵!你是否发现循环了哈!!那就对了!问题不就解决了吗?哈!自己创建一个数组来厨房这个循环不就ok了吗?哈哈!let's go!!!#include<iostream>using namespace std;int main(){ int a,b,n,A[50],i; while(cin>>a>>b>>n) { if(a==0&&b==0&&n==0) break; else if( 阅读全文
posted @ 2012-11-05 18:00 @ 小浩 阅读(356) 评论(0) 推荐(0) 编辑
关于函数sort()和qsort()的讲解!
摘要:sort()和qsort(),顾名思义,就是排序函数!!!目的就是简化程序,是程序看起来更加规范实用!!!呵呵!!1)sort()在使用sort()函数的时候在前面加上#include<algorithm>头文件!升序发排序:int a[10];sort(a,a+10);例子如下:#include<iostream>#include<algorithm>using namespace std;int main(){int i;int a[10];for(i=0;i<10;i++) cin>>a[i]; sort(a,a+10); for(i 阅读全文
posted @ 2012-11-05 15:07 @ 小浩 阅读(679) 评论(0) 推荐(0) 编辑
杭电1060
摘要:此题是一道数学题,也是一道技巧题,也是不能直接算的,否则会超时的!!!此题思路:设n^n=d.xxxx*10^(k-1),其中k表示n^n的位数;d.xxxx=10^(log10(n^n)-(k-1));其中k=(__int64)(log10(n^n)+1;所以d=(int)(10^(log10(n^n)-(k-1)))=(int)(10^(log10(n^n)-((__int64)(log10(n^n)+1;-1)));此题思路比较麻烦,但程序还是很简单的哈!#include<iostream>#include<math.h>using namespace std;i 阅读全文
posted @ 2012-11-04 20:47 @ 小浩 阅读(290) 评论(0) 推荐(0) 编辑
杭电1061
摘要:此题是一道观察技巧题!先找规律,然后再做,如果直接来的话,肯定会超时的哈!对于然和一个输入的整数m,先判断它的尾数是几,然后须寻找规律,1)当尾数是 0,1,5,6的时候,无乱多少次方,其尾数都不变,及周期是1。2)当尾数是 4:(4,9) 周期是2;当尾数是9:(1,9) 周期也是2; 3)当尾数是2,3,7,8的时候,2:(2,4,8,6);周期是4; 3:(3,9,7,1); 7:(7,9,3,1); 8:(8,4,2,6);哈哈!规律已经有了!剩下看你的了哈! #include<iostream>using namespace std;int main(){ int n,m 阅读全文
posted @ 2012-11-04 18:59 @ 小浩 阅读(377) 评论(0) 推荐(0) 编辑
杭电1048
摘要:此题是一道简单的程序应用题!!也没有太多好说的,哈!!!直接ac!!**关于函数memset()的讲解请参考:http://www.cnblogs.com/xiohao/archive/2012/11/03/2752225.html#include<iostream>#include<cstring>using namespace std;int main(){char a[205],b[205];int i;while(gets(a)){ if(strcmp(a,"START")==0) { memset(a,0,sizeof(a)); memse 阅读全文
posted @ 2012-11-04 18:07 @ 小浩 阅读(481) 评论(0) 推荐(0) 编辑
关于函数memset()函数的讲解!
摘要:memset函数的原型是:void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。说白了,就是对数组从s位置开始的n个字节依次附上相同的值c!但话说回来了,此函数的主要作用还是数组的初始化!!int a[100];memset(a,0,sizeof(a));此函数即将数组进行初始化!!例子1:赋值#include<iostream>#include<string.h>using namespace std;int main(){char a[10]; memset(a,0,sizeof(a) 阅读全文
posted @ 2012-11-04 18:07 @ 小浩 阅读(809) 评论(0) 推荐(0) 编辑
strlen与sizeof区别(转载)
摘要:#include "stdio.h"#include "string.h"void main(){char aa[10];printf("%d",strlen(aa));printf("%d",sizeof(aa));}程序运行得到结果是strlen(aa)=15.sizeof(aa)=10;这是怎么回事呢?strlen是有效字符串的长度,不包含‘\0’,与初始化有关系,而sizeof与初不初始化没有关系。下面我们看看它们的区别吧(以下都是在网上查的)strlen(char*)函数求的是字符串的实际长度,它求得方法 阅读全文
posted @ 2012-11-03 13:15 @ 小浩 阅读(210) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示