杭电OJ
文章平均质量分 54
何必纠结于ID
这个作者很懒,什么都没留下…
展开
-
2013金山西山居创意游戏程序挑战赛——复赛(1) 非诚勿扰
非诚勿扰Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 13 Accepted Submission(s): 10Problem Description 作为2013年699万应届毕业生中的一员,由于原创 2013-05-24 21:09:33 · 2483 阅读 · 2 评论 -
不容易系列之(3)—— LELE的RPG难题 (递推)
这道题只要找出递推关系式就很容易了。设n个格子有f(n)种,分俩种情况:(1)第一个格子与第n-1个格子不同色,则第n个格子只有一种涂法,f(n)=f(n-1)*1;(2)第一个格子与第n-1个格子同色,即第n-1个格子只有一种涂法,则第n个格子有2中涂法,f(n)=2*1*f(n-2) ;#includeusing namespace std;int ma原创 2012-12-14 22:35:51 · 738 阅读 · 0 评论 -
HDOJ1318 Palindromes(镜像回文字符串)
我用的是比较笨的办法A的。应该可以用库函数strchr( )解决的,但我试了好几次都没成功。所以还是用这个比较保守安全。注意A,F,K,4.......之类的单个字符是回文字符串,而B,E,1,3......之类的单个字符是镜像回文字符串。镜像字符串还必须满足:字符串中所有的字符必须都是镜像字符。比如:E3,EI3,EII3都是镜像字符,而EF3,E33之类的不是镜像字符。即字符串原创 2012-12-24 13:15:20 · 1557 阅读 · 0 评论 -
HDOJ2018 母牛的故事
这道题就是k阶斐波那契数列的小小变形,找到规律了就很简单。#includeusing namespace std;int main(){ int n,a[60],i; while(scanf("%d",&n),n){ a[0]=1; a[1]=1; a[2]=2; a[3]=3; for(i=4;i<=n;i++)原创 2012-12-13 22:15:54 · 689 阅读 · 0 评论 -
HDOJ2096 小明A+B(又是一道简单的数论题)
#includeusing namespace std;int main(){ int t,a,b; scanf("%d",&t); while(t--){ scanf("%d%d",&a,&b); printf("%d\n",(a%100+b%100)%100); } return 0; }原创 2012-12-12 23:23:55 · 1134 阅读 · 0 评论 -
HDOJ2058 The sum problem
这道题如果用枚举法肯定会超时,所以用等差数列求和公式才行。如下图:注意函数sqrt( ) 的参数只能是float ,double,long double型的,所以在里面要要把2*m 强制转换成double 型的。如下图:代码如下:#include#includeusing namespace std;int main(){原创 2012-12-12 14:20:36 · 1067 阅读 · 0 评论 -
HDOJ2057 A + B Again(十六进制数加法)
为什么用printf("%I64X",a+b); 不能输出十六进制负数?求大神解答一下。#includeusing namespace std;int main(){ signed __int64 a,b; while(scanf("%I64X%I64X",&a,&b)!=EOF){ if(a+b>=0) printf("原创 2012-12-11 22:32:38 · 834 阅读 · 0 评论 -
HDOJ2055 An easy problem
这道题不难,但中间却有个小插曲,困扰了我好久。已AC的代码如下:#includeusing namespace std;int main(){ int t,y; char x; cin>>t; while(t--){ cin>>x>>y; if(x=65) cout<<y+x-'A'+1<<原创 2012-12-10 23:37:59 · 1174 阅读 · 1 评论 -
HDOJ2053 Switch Game
这道题只要求第n盏灯的状态,简化了很多。#includeusing namespace std;int main(){ int n,lamp,i; while(scanf("%d",&n)!=EOF){ lamp=0; for(i=1;i<=n;i++){ if(n%i==0){原创 2012-12-10 22:33:20 · 675 阅读 · 0 评论 -
HDOJ2052 Picture
#includeusing namespace std;int main(){ int w,h,i,j; while(scanf("%d%d",&w,&h)!=EOF){ w=w+2; h=h+2; for(i=1;i<=h;i++){ for(j=1;j<=w;j++){原创 2012-12-10 13:20:47 · 667 阅读 · 0 评论 -
HDOJ1215 七夕节
这道题要用到数论上的一些知识。根据上图就很容易理解下面的代码了。方法一:筛选法#includeusing namespace std;int main(){ int t,n,s,i; scanf("%d",&t); while(t--){ scanf("%d",&n); s=1; fo原创 2012-12-21 22:16:29 · 1470 阅读 · 0 评论 -
HDOJ2084 数塔(经典的动态规划问题)
动态规划是一种用途很广的问题求解方法,它本身并不是一个特定的算法,而是一种思想,一种手段。动态规划可以说是一种牺牲空间换时间的思想。#includeusing namespace std;int a[101][101],dp[101][101];//数组a存放数塔每一项的值、数组dp[i][j]指从第(i,j)项出发时能得到的最大和(包括第(i,j)项本身的值原创 2012-12-15 00:13:35 · 2468 阅读 · 0 评论 -
HDOJ2098 分拆素数和
#includeusing namespace std;bool prime(int x){// prime 函数判断一个数是否为素数 for(int i=2;i*i<=x;i++)//只需要穷举到√n if(x%i==0) return false; return true; }int main(){原创 2012-12-15 23:04:44 · 1136 阅读 · 0 评论 -
2013金山西山居创意游戏程序挑战赛——初赛(3)生日猜猜猜
这道题是水题。#includeusing namespace std;int leapYear(int n){ if(((n % 4 == 0)&&(n % 100))||(n % 400 == 0)) return 1; return 0;}int gcd(int a,int b){ int r; while(原创 2013-05-18 20:36:31 · 2201 阅读 · 1 评论 -
用Java轻松A掉腾讯编程马拉松第三场1001题
原题:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1001&cid=439Java确实很好很强大。只要Java基础比较好A这样的题目是简简单单的啦。这里需要注意的是Calendar 类的月份、日期小于10的都没有前缀0,跟题目要求不符。所以要用System.out.printf("%d/%02d/%02d",year原创 2013-03-23 23:12:34 · 1812 阅读 · 0 评论 -
(专题)用Java 轻松AC掉HDOJ大数题
大数题是最适合用Java 来做了。java.math.BigDecimal; java.math.BigInteger; 提供了很多很实用的方法,对处理大数据有很大的帮助。杭电上大数题目目前总结如下:1002 , 1042 ,1047,1063,1297,1316,1715,1753, 2054HDOJ1047 Integer InquiryInteger Inquiry原创 2013-03-06 14:47:56 · 3162 阅读 · 0 评论 -
HDOJ1002 A + B Problem II
原谅我我这个时候才A掉这道经典的大数题目,因为用C++尝试了三四次一直A不掉,最后还是用Java A掉的。杭电OJ上用Java A题时要注意到一点的是类名必须是Main ,要不然会编译错误。import java.util.Scanner;import java.math.BigInteger;public class Main{ public static void m原创 2013-03-02 20:01:37 · 4104 阅读 · 1 评论 -
HDOJ2068 RPG的错排
这道题也要用到错排的知识。 题目只要求他答对一半或以上就算过关,换句话说就是猜对了一半以上,其他的全部算是错排。所以就是求1~n/2每项的错排数再乘以组合数(函数c(n,m)求组合数)之和。 HDOJ2049这道题也是这个类型的//hdoj2068.cpp#includeusing namespace std;__int64 c(int n,int m){原创 2013-02-28 20:30:43 · 2314 阅读 · 0 评论 -
HDOJ2048 神、上帝以及老天爷(错排问题)
这道题要用到错排的知识,刚开始也不会。后来到网上找资料恶补了一下就A掉了。哈哈。错排的相关知识可以参考我的博客:http://blog.folyd.com/archives/39//hdoj2048.cpp#includeusing namespace std;int main(){ int t,n,i; double p; double a[21],b原创 2013-02-27 12:55:30 · 1021 阅读 · 0 评论 -
HDOJ1042 N!(大数阶乘)
Java AC代码:用Java A这道题只花了1000MS !!!(题目限定在5000MS内)import java.util.Scanner;import java.math.BigInteger;public class Hdoj1042 { /** * @param args */ public static void main(String[] args) {原创 2013-03-04 22:42:24 · 2660 阅读 · 1 评论 -
HDOJ2054 A == B ?(又一道大数题目)
大数题目最适合用Java 来做,轻松简单,不要像C/C++那样设数组,还要考虑很多东西。刚开始是用a.equals(b),可是总是WA了。后来改成了a.compareTo(b)就AC掉了。这里要注意这两个方法的区别。官方API文档上说明得很清楚。如下图所示:import java.util.Scanner;import java.math.BigDecimal;;原创 2013-03-03 18:19:15 · 2537 阅读 · 0 评论 -
HDOJ2050 折线分割平面
运用数学公式:n条直线分的平面数是:n*(n+1)/2+1,每条折线可以看成是2条直线所以平面数为 2*n*(2*n+1)/2+1,又每条折线和每2条直线分的平面数相差2个故最后的平面数为 2*n*(2*n+1)/2+1-2*n#includeusing namespace std;int main(){ int t,n; __int64原创 2012-12-19 23:53:00 · 982 阅读 · 0 评论 -
HDOJ2099 整除的尾数
#includeusing namespace std;int main(){ int a,b,i; bool test; while(scanf("%d%d",&a,&b),a||b){ a=100*a; test=true; for(i=0;i<=99;i++) if((a+i原创 2012-12-15 22:14:53 · 1783 阅读 · 0 评论 -
HDOJ2044 一只小蜜蜂(2阶斐波那契数列题)
这道题要注意用__int64 ,并且用I64d 输入,要不然AC不过。斐波那契数列类的题目很常见,但也不难,一般用数组处理而不要用函数递归处理。递归处理很容易超时。#includeusing namespace std;int main(){ __int64 n,m[50];//刚开始时是用int型,AC不掉。改成__int64 就AC掉了 int a,b,i,tmp原创 2012-12-09 23:16:20 · 1676 阅读 · 0 评论 -
HDOJ2043 密码
#includeusing namespace std;int main(){ int m,i,len; char psw[55]; scanf("%d",&m); getchar(); while(m--){ int test[4]={0,0,0,0}; gets(psw); l原创 2012-12-09 22:47:50 · 960 阅读 · 0 评论 -
HDOJ2037 今年暑假不AC (经典的贪心问题)
A的第一道贪心题目,花了我好几天的时间。之前不太懂贪心的思想,参阅了一些算法书籍,才有所领会。今天中午吃饭的时候也在想这道题目,冥思苦想突然灵感来了,这道题要用结构体才行。于是下午仔细看了C语言的结构体。刚开始还画了草图帮助理解。代码结合上面的图更容易理解。#includeusing namespace std;struct{ int s,e;原创 2012-12-08 22:58:17 · 1730 阅读 · 0 评论 -
HDOJ2035 人见人爱A^B (快速幂取模问题)
这道题目要用到数论的知识。简单的说就是要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。#includeusing namespace std;int main(){ int a,b,tmp; while(scanf("%d%d",&a,&b)!=EOF){ if(a==0&&b原创 2012-12-04 22:23:39 · 2025 阅读 · 0 评论 -
HDOJ2034 人见人爱A-B (要学会用库函数sort())
这道题要会利用C++里的库函数sort() sort()详细用法在下一篇博客。代码如下:#include#include//sort()函数包含在algorithm头文件里面 using namespace std;int main(){ //freopen("input.txt","r",stdin); //freopen("output.txt","w"原创 2012-12-03 23:36:57 · 1999 阅读 · 0 评论 -
HDOJ2032 杨辉三角
一次AC。哈哈 #includeusing namespace std;int main(){ int n; int a[30][30]; while(scanf("%d",&n)!=EOF){ a[0][0]=1; a[1][0]=1; a[1][1]=1;//先初始化第一行第一项、第二行第一二项为1 for(int原创 2012-12-02 23:48:06 · 1672 阅读 · 0 评论 -
HDOJ2031 进制转换
代码有些地方是借鉴别人的,好的代码要好好学习了。Post Code:#include using namespace std;int main(){ char str[17]="0123456789ABCDEF";//用一个字符型数组存好"0123456789ABCDEF" int n,m,tmp,i,j; int r[100]; while(sc原创 2012-12-02 00:15:02 · 1423 阅读 · 0 评论 -
HDOJ2030 汉字统计 (汉字机内码特点)
这道题只要明白汉字机内码的特点就很容易了。汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。 计算机中, 补码第一位是符号位, 1 表示为 负数,所以 汉字机内码的每个字节表示的十进制数都是负数统计输入字符串含有几个汉字,只只需求出字符串中小于0的字符有几个,将它除以2就得到答案。Post Code:#includeusing n原创 2012-11-30 21:50:36 · 3228 阅读 · 1 评论 -
HDOJ2029 Palindromes _easy version 回文数
Post Code:#includeusing namespace std;int main(){ int n,p,q; bool test; char str[100]; scanf("%d",&n); getchar(); while(n--){ test=true; gets(str); for(p=0,q=s原创 2012-11-29 22:14:21 · 1124 阅读 · 0 评论 -
HDOJ2026 首字母变大写
利用小写字母比大写字母ASCII码值大32。(有没有库函数直接把小写字母转换成大写字母?求指教)Post Code:#includeusing namespace std;int main(){ char str[101]; while(gets(str)){ for(int i=0;i<strlen(str);i++){原创 2012-11-27 20:39:31 · 3185 阅读 · 2 评论 -
HDOJ2025 查找最大元素
这道题目简单,没什么好说的。Post Code:#include using namespace std;int main(){ char ch[101]; char max; while(gets(ch)){ max=ch[0]; int len=strlen(ch); for(i原创 2012-11-27 20:22:56 · 979 阅读 · 0 评论 -
HDOJ2024 C语言合法标识符
C语言合法标识符:1.只能以大小写字母或下划线开始;2.可以由大小写字母,下划线或数字(0~9)组成;3.不能是c里面的关键字不过这道题目不需要考虑第三点。Post Code:#includeusing namespace std;int main(){ int n; char ch[51]; scanf("%d",&n); getchar();//注原创 2012-11-26 22:45:43 · 5820 阅读 · 0 评论 -
HDOJ2028 Lowest Common Multiple Plus 求n个数的最小公倍数
这道题整整提交了8次才AC。Post Code:#includeusing namespace std;__int64 gcd(__int64 x,__int64 y){//用辗转相除法求2个数的最大公约数 int r; if(x<y){ r=x; x=y; y=r; }原创 2012-11-28 23:10:41 · 1350 阅读 · 0 评论 -
HDOJ2036 求多边形的面积
这道题目只要知道求多边形面积公式就很容易解决了。多边形面积公式如下:点顺序给出S=0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+...+xn*y1-yn*x1) #include #include using namespace std;int main(){ int n,tmp,i; float s; int x[101]原创 2012-12-05 22:26:37 · 1599 阅读 · 0 评论 -
HDOJ2042 不容易系列之二
这道题容易#includeusing namespace std;int main(){ int n,a,total; scanf("%d",&n); while(n--){ total=3; scanf("%d",&a); for(int i=1;i<=a;i++) total=2*(tota原创 2012-12-08 23:19:25 · 844 阅读 · 0 评论 -
HDOJ2041 超级楼梯 (递归与分治)
这道题目如果用函数递归的话肯定会超时,应为函数调用要耗费时间,所以用数组来写。#includeusing namespace std;/*int fn(int m){//之前想用递归写,可是超时了。 if(m==1||m==2) return 1; return fn(m-1)+fn(m-2); }*/ int main(){ int原创 2012-12-07 21:56:07 · 1272 阅读 · 0 评论 -
HDOJ2015 偶数求和
//hdoj2015.cpp#includeusing namespace std;int main(){ int n,m; int a[101]; while(scanf("%d%d",&n,&m)!=EOF){ //if(n100||n<=0||m<=0) return 0; if(n<=100){ a[0]=0; int count=0; int sum=原创 2012-11-17 01:00:05 · 1449 阅读 · 0 评论