摘要:
/*计算二进制数转化为十进制数的结果*/样例输入:11111111111111111111111111111111111111111111111样例输出:1271099511627775这里使用了预处理,计算起来方便,直观。 1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int s[110][110]={1};int p,q; 6 for(p=1;p<=100;p++){ 7 int c=0; 8 for(q=0;q<=p;q++) 9 {int w=2*s... 阅读全文
摘要:
问题描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入数据包括多个数据集合。每个数据集合的第一行是两个整数W 和H,分别表示x 方向和y 方向瓷砖的数量。W 和H 都不超过20。... 阅读全文
摘要:
问题描述鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。”我们假定多多在每个单位时间内,可以做下列四件事情中的一件:1) 从路边跳到最靠近路边(即 阅读全文
摘要:
问题描述6*9 = 42 对于十进制来说是错误的,但是对于13 进制来说是正确的。即, 6(13) * 9(13) =42(13), 而 42(13) = 4 * 131 + 2 * 130 = 54(10)。 你的任务是写一段程序读入三个整数p、q和 r,然后确定一个进制 B(2<=B<=16) 使得 p * q = r. 如果 B 有很多选择, 输出最小的一个。例如: p = 11, q = 11, r = 121. 则有 11(3) * 11(3) = 121(3) 因为 11(3) = 1 * 31 + 1 * 30 =4(10) 和 121(3) = 1 * 32 + 2 阅读全文
摘要:
问题描述一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6. 这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们 阅读全文
摘要:
问题描述国际象棋的棋盘是黑白相间的 8 * 8 的方格,棋子放在格子中间。如图3-1 所示:王、后、车、象的走子规则如下: 王:横、直、斜都可以走,但每步限走一格。 后:横、直、斜都可以走,每步格数不受限制。 车:横、竖均可以走,不能斜走,格数不限。 象:只能斜走,格数不限。写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。85输入数据第一行是测试数据的组数t(0 <= t <= 20)。以下每行是一组测试数据,每组包括棋盘上的两个位置,第一个是起始位置,第二个是目标位置。位置用"字母-数字"的形式表示,字母从& 阅读全文
摘要:
链接http://acm.hdu.edu.cn/showproblem.php?pid=2050本题目的关键在于从直线类推到折线,两条直线比一条折线多分两个部分,而n条折线则比2n条直线少2n个部分 1 #include<stdio.h> 2 __int64 a[10003]={1,4}; 3 void f() 4 { 5 int i; 6 for(i=2;i<10003;i++) 7 a[i]=a[i-1]+4*i-1; 8 } 9 int main()10 {11 f();int n;12 scanf("%d",&n);13 int ... 阅读全文
摘要:
ACM队不是为了一场比赛而存在的,为的是队员的整体提高。大学期间,ACM队队员必须要学好的课程有:l C/C++两种语言l 高等数学l 线性代数l 数据结构l 离散数学l 数据库原理l 操作系统原理l 计算机组成原理l 人工智能l 编译原理l 算法设计与分析除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。以下学习计划每学期中的内容不分先后顺序,虽说是为立志于学习ACM的同学列的知识清单,但内容不限于ACM的知识。英语之类与专业相距较远的课程请自行分配时间,这里不再列举。大一上学期:必学:2. 简单数学题(推荐“数学”分类20道以上)需要掌握以下基本算法:a) 欧几里 阅读全文
摘要:
题目链接http://openoj.awaysoft.com/JudgeOnline/problem.php?id=2010如果直接循环判断,无疑必定超时,所以此题的关键就是进行预处理操作,代码如下: 1 #include<stdio.h> 2 #include<math.h> 3 bool p[1000001]; 4 long long q[1000001]; //VC中用__int64定义 , %I64d 输出 5 void prime() //预处理 6 { 7 long long i,j; 8 p[1]=1; 9 for(i=2;i<1... 阅读全文
摘要:
输入n个元素组成的序列S,你需要找出一个最大乘积的连续子序列。如果不是正数,输出-1,表示无解。1=<n=<18,-10=<Si=<10。样例输入:32 4 -352 5 -1 2 -1样例输出:820#include<stdio.h>int main(){ int n; while(~scanf("%d",&n)) { int s[20]; for(int i=0;i<n;i++)scanf("%d",&s[i]); __int64 ji[400],max=-100000;int t=0; me 阅读全文
摘要:
链接http://acm.hdu.edu.cn/showproblem.php?pid=2048#include<stdio.h>__int64 fact(int n){ if(n==1)return n; return (__int64)n*fact(n-1);}int main(){ __int64 f[20]={0,0,1},t; for(t=3;t<=20;t++) f[t]=(t-1)*(f[t-1]+f[t-2]); int n;while(~scanf("%d",&n)) { int i;int m; ... 阅读全文
摘要:
链接http://acm.hdu.edu.cn/showproblem.php?pid=2047#include<stdio.h>__int64 a[40]={1,3};void f(){ int i; for(i=2;i<=40;i++) a[i]=2*(a[i-1]+a[i-2]);}int main(){ f(); int n; while(~scanf("%d",&n)) printf("%I64d\n",a[n]); return 0;} 阅读全文
摘要:
链接http://acm.hdu.edu.cn/showproblem.php?pid=2046#include<stdio.h>int main(){ int a,b,n; __int64 s[100]; while(scanf("%d",&a)!=EOF) { s[1]=1; s[2]=2; for(n=3;n<=a;n++) { s[n]=s[n-1]+s[n-2]; } if(a==1||a==2) printf("%d\n",a); ... 阅读全文
摘要:
链接http://acm.hdu.edu.cn/showproblem.php?pid=2045#include<stdio.h>int main(){ int n,i; __int64 a[51];a[1]=3;a[2]=6;a[3]=6; while(scanf("%d",&n)!=EOF) { for(i=4;i<=n;i++) a[i]=2*a[i-2]+a[i-1]; printf("%I64d\n",a[n]); } return 0;} 阅读全文
摘要:
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2044#include<stdio.h>__int64 a[50]={1,1};void f(){ int i; for(i=2;i<50;i++) a[i]=a[i-1]+a[i-2];}int main(){ f();int n; while(~scanf("%d",&n)){ int i;int x,b; for(i=0;i<n;i++){ scanf("%d%d",&x,&b); pr... 阅读全文