using namespace std
typedef struct bignum {
int digits[20]
int len
} BigNum
int n, m, x1, yy1, x2, y2
BigNum c[51][51]
int inrect(int x, int y)
{
return x >= x1 &&x <= x2
&&y >颤裂御= yy1 &&y <= y2
}
void add(BigNum&num1, BigNum&num2)
{
int i, len, tmp
for (i = num1.leni <20i++)
num1.digits[i] = 0
for (i = num2.leni <20i++)
num2.digits[i] = 0
len = num1.len >num2.len ? num1.len : num2.len
for (i = 0, tmp = 0i <leni++)
{
tmp += num1.digits[i] + num2.digits[i]
num1.digits[i] = tmp % 10
tmp /= 10
}
num1.len = len
while (num1.len <20 &&tmp != 0)
{
num1.digits[num1.len++] = tmp % 10
tmp /= 10
}
}
int main()
{
int i, j
cin >>n >>m
cin >>x1 >>yy1 >>x2 >>y2
c[1][1].digits[0] = 1
c[1][1].len = 1
for (i = 1i <= ni++)
for (j = 1j <茄岩= mj++)
{
if (i != 1 || j != 1)
{
c[i][j].digits[0] = 0
c[i][j].len = 1
}
if (!inrect(i, j))
{
if (i >1)
add(c[i][j], c[i-1][j])
if (j >1)
add(c[i][j], c[i][j-1])
}
}
for (i = c[n][m].len - 1i >= 0i--)
cout <<c[n][m].digits[i]
cout <源坦<endl
return 0
}
我们老师写的,我正在学,老师讲一课做一课。一共10天,现有几 天,过一段时间补上。(给你qq吧)本人打的,
no。1
一、学校网站网址:
外网:http://wyzxdj.gicp.net:88;内网:http://192.168.1.1:88
知识点:
(1)http——超 文本 传输 协议,ftp——文件 传输 协议
(2)网站有两类:http网站(web网站)、ftp网站
(3)域名与IP地址(在网络上计算机IP是唯一的)
(4)DNS域名解析系统——把域名解析为IP地址
(5)端口:65536个端口(其中一部分系统使用),web网站默认使用80端口(两头可以省略),ftp网站链悔肆默认使用21端口。
二、考试时间:
全国初赛(笔试、县级)10月的第3个星期六,2小时(100分)
全国复赛(上机、九江)11月的第3个星期六,上机棚轿3小时,四个大题(每题100分,共400分)
三、下载安装相关软件
下载安装FP——安装到D:下。注意:目录名为FP,复赛时有可能为PP
如果桌面有快捷方式,可以通过 右击→属性 获取路径。
四、计算机信息存储
计算机信息存储:文件形式(位置、名字)、表的形式(注册表、内存分配表、CMOS)
文件管理模式:通过文件夹(目录)来管理文件的
磁盘:分区使用。盘符(一个大写字母加:组成)
软驱(与软盘)分开:使用A与B,从C开始给硬盘(包含驱动器与盘片)和光驱(光驱与光盘分开)
每个分区都有一个根目录。形式:D:\A\B\C\1.txt
计算机中最高级文件夹是“桌面”
五、常用的DOS命令
1、 *** 作系统:Windows---视窗 *** 作系统(多任务、图形式)、DOS——磁盘 *** 作系统(单任务、字符式)
2、微软公司——MicroSoft,简称MS
3、cmd——由Windows进入模拟DOS窗口(开始→运行→cmd→确定)
4、模拟DOS窗口与全屏模式互换:alt+回车
5、关闭模拟DOS窗口:exit
6、磁盘命令 D: (回车)
7、在DOS下查看文件(夹)名 dir——会用 dir/p/w
dir/p——纵向看(相当于widnows中的“详细信息”前瞎)
dir/w——横向看(相当于widnows中的“列表”)
dir/p/w
?如何区别文件(夹)
dir或dir/p——有<dir>就是目录或者没有大小
dir/w/p——有方括号的就是目录
8、改变目录命令 CD
cd 目录名——打开一个目录
cd \fp\bin\go32v2
cd.. 回到上一级
cd\ 回到根目录
9、查看文本文件内容。type 1.pas
六、启动fp
d:
cd\fp\bin\go32v2
fp
退出:alt+x (选择是否保存)
七、fp主菜单
alt+红色字母
File文件、Edit编辑、Search查找、Run运行、Compile编译、Debug调试、Tools工具、Option选项、Windows窗口、Help帮助
File——New新建、F2保存、Exit
Edit——Cut剪切、Copy复制、paste粘贴、Clear清除
删除单个,使用 退格键或delete键
删除一行,使用 ctrl+Y
选择 *** 作:shift+方向键、home、end
Tools——ASCII table
F9——生成exe(先编译再链接)
=======================================================================
八、Free Pascal程序
1、程序由多条语句(简单语句和复合语句)组成;每条语句最后使用分号结束(end前可省略分号)。
2、程序结构:顺序结构、分支/选择结构、循环/重复结构、子程序结构(过程和函数)。
3、采取模块化思想、从上到下、逐步求精。
4、变量、常量问题
变量——单变量、数组变量、结构变量;命名:字母带头;全局变量、局部变量
5、要使用变量,必须先申请——合理定义(类型恰当---特别对于数组变量且个数很多)。
6、得不到满分的主要原因:有些情况有遗漏、变量定义范围小了、个数少了。
7、由begin……end.组成(end.整个程序中只能出现1次)
8、程序书写采用缩进式、使用空行分隔程序功能段
9、复赛要求:从.in文件中读取数据→编程处理→写到.out文件中
10、注释语句:单行使用 // ;多行使用{ }——用于调试
11、赋值语句: 变量使用“ :=”;常量使用“=”
12. 定义:
const pai=3.14
var a:integer //-3万2~3万2
b:longint //-21亿~21亿
c:byte //0~255
var x:array[3..10] of integer// a[3]到a[10]
13、常见出错信息
(1)Syntax error, expected but BEGIN found 语法错误,预期出现分号(;)但找到了BEGIN——Begin前少了分号(;)
(2)Identifier not found INTEGER1 没找到标识符INTEGER1——标识符单词有错
(3)Illegal expression 非法的表达式——赋值语句使用了“=”
九、读数据讲解:2004第1题
(1)建立.in输入文件——建议使用edit unhappy.in
(2)使用type unhappy.in检查.in是否正确
(2)编程从.in中读取数据
var f:text //定义一个变量f,用于 *** 作文件
a:array[1..7,1..2] of byte
i:byte
begin
assign(f,'unhappy.in') //指针指向文件
reset(f) // 指针指向第1个字符
for i:=1 to 7 do readln(f,a[i,1],a[i,2])
close(f) //关闭指针
//显示读结果
for i:=1 to 7 do wrtieln(a[i,1],' ',a[i,2])
end.
no.2
一、整型数据(复习)
var a:byte
b:integer
c:longint
二、子界型数据(只能使用整型)
1..100
三、实型数据
说明:
(1)可以存放小数、也可以存放整型数据
(2)使用了“/”运算、sqrt()开平方,其结果必须使用实型变量保存
(3)使用整除 div、求余 mod,其结果可以使用整型变量存放
(4)在for …… to ……do……或for……downto……do……中,只能使用整型数据或整型变量
var a:single:
b:real
c:double
四、逻辑/布尔数据
说明:
(1)每个变量占用1个位。
(2)其结果不是true就是false
var a:boolean
b:array[1..1000] of boolean
逻辑运算:
(1)单目运算:not,非。书写:~、……
(2)双目运算:and, 与。书写:∧、∩、……,口诀:同真为真,其余为假(1真3假)——等于“乘法*”
(3)双目运算:or, 或。书写:∨、∪、……,口诀:同假为假,其余为真(1假3真)——类似“加法+”但1+1=1
(4)双目运算:xor, 异或。书写:⊕、……, 口诀:同假异真。(2真2假)——类似“加法+”但1⊕1=0
知识:
(1)如果进行双目逻辑运算,逻辑表达式必须使用()。例: a=0 and b 是错误的。正确的应是:(a=0) and b
(2)初赛试题中进行逻辑运算时:可以将true用1替换,false用0替换,and/∧/∩用*替换,or/∨/∪用+替换,xor用⊕,按从左到右运算(除方括号以外)
(3)以下例题解题思路:
下列逻辑运算不正确的是(______)。(说明:“•”为逻辑与/逻辑乘,“+”为逻辑或/逻辑加,“⊕”为“逻辑异或”,字母上面的横线为“逻辑非”)
A A•(A + B)= A
B A +(A•B)= A
C A•(B + C)= A•B + A•C
D A +(B•C)=(A + B)•(A + C)
E A + 1 = A
思路:分A=1或A=0两种情况讨论
例题讲解(问题求解):
(取石子游戏) 现有5堆石子,石子数依次为3,5,7,19,50甲乙两人轮流从任一堆中任取(每次只能取自一堆,不能不取), 取最后一颗石子的一方获胜。甲先取,问甲有没有获胜策略(即无论乙怎样取,甲只要不失误,都能获胜)?如果有,甲第一步应该在哪一堆里取多少?请写出你的结果:
甲(______)获胜策略(填“有”或“没有”)。
如有获胜策略,第一步应该在第(______)堆中取(______)颗石子。
解答:博弈原理。讲求平衡性,对所有数进行xor,其值=0时为平衡状态。谁打破平衡状态谁输!
五:字符型数据
说明:只存放一个字符。
var a:char
====================================================================
六:字符串型数据
说明:
(1)不超过255个字符
(2)定长和变长
(3)自动分割为字符数组。相当于字符数组,设s为字符串数据,则s[2]表示s中的第2个字符
(4)函数不能单独成句,但可以用于赋值语句或输出语句中。
过程单独成句,就是一条完成的语句。
(5)求长函数length(s)
(6)查找函数pos(s1,s)——s1子串,s源串,返回找到的第1个位置(返回0,表示没找到)
(7)连接函数concat(s1,s2,s3,……)——将s2,s3……依次加在s1后面,最后返回s1。可以使用s1=s1+s2+s3+……
(8)截取函数copy(s,i,L)——在S中的第i个位置开始截取长为L的字符串
(9)删除过程delete(s,i,L)——删除S中第i个开始长为L的字符串,返回S
(10)插入过程insert(s1,s,i)——将s1插入在s中的第i个位置,返回S
(11)数字变字串过程str(12,s)——返回s='12'
(12)数值字串变数字过程val('125',a)——返回a=125
var a:string //变长
var b:string[20] //定长
七、分支结构
(1)2分支——else前不能有分号
if 条件 then 语句1;
if 条件 then 语句1 else 语句2;
if 条件 then
begin
语句组1
end
else
begin
语句组2;
end
if 条件1 then
语句组1
else if 条件2 then
语句组2
……
else
语句组
(2)多分支
case 表达式 of
常量1:语句1;
常量2:语句2;
……
常量:语句;
else 语句n+1 //可选项
end
多分支应用:根据年、月输出该月多少天?
case m of //m代表月
1,3,5,7,8,10,12:days:=31 //days代表该月天数
4,6,9,11:days:=30
2:if (y mod 400=0) or ((y mod 4=0) and (y mod 100<>0)) then days:=29 else days:=28
end
八、循环/重复结构
(1)限定次数
for … to … do 语句组; //循环变量自动累加1,前小后大。
for … downto … do 语句组; //循环变量自动累减1,前大后小。
(2)不定次数
while 条件 do 语句组;
repeat
语句组
end
(3)退出循环使用 break同时退出多层循环,一般采用设置一个逻辑变量+break来实现。
九:函数与过程区别
(1)关键字不同
(2)函数有数据类型,过程没有。
(3)过程通过参数带来结果(必须使用var),而函数只能通过函数名带回一个结果。
(4)过程单独成句子;函数只能用于赋值语句或输出语句中。
十、2011年初赛阅读程序第三题讲解
原题:
begin
readln(s)
m1=' '
m2=' '
for i:=1 to length(s) do
if s[i]>m1 then
begin
m2:=m1
m1:=s[i]
end
else if s[i]>m2 then
m2:=s[i]
writeln(ord(m1),' ',ord(m2))
end.
十一、2011年初赛阅读程序第四题讲解
可以将原题进行“处理”(将循环结构改成顺序结构),增加易读性,但必须与原题完全等价。
说明:本题使用了函数,并且使用“递归调用”——自己调用自己
function r(n:integer):integer
var i:integer
begin
if n<=5 then
begin
r:=n
exit //出口
end
if r(n-1)<0 then begin r:=1exitend //①出口
if r(n-2)<0 then begin r:=2exitend //②出口
if r(n-3)<0 then begin r:=3exitend //③出口
if r(n-4)<0 then begin r:=4exitend //④出口
if r(n-5)<0 then begin r:=5exitend //⑤出口
r:=-1//出口
end
begin
readln(n)
writeln(r(n))
end.
分析:函数r(n)有多个出口!。
(1)输入值为7或16
(2)n<=5时,返回原值,即:
r(5)=5
r(4)=4
r(3)=3
r(2)=2
r(1)=1
(3)n=6时,
计算r(5)——返回5,①不执行,执行下一步
计算r(4)——返回4,②不执行,执行下一步
计算r(3)——返回3,③不执行,执行下一步
计算r(2)——返回2,④不执行,执行下一步
计算r(1)——返回1,⑤不执行,执行下一步
所以r=-11,即r(6)=-1
(4)n=7时,
计算r(6)——返回-1,①执行,所以r(7)=1
(5)n=8时,
计算r(7)——返回1
计算r(6)——返回-1,②执行,所以r(8)=2
(6)n=9时,
计算r(8)——返回2
计算r(7)——返回1
计算r(6)——返回-1,③执行,所以r(9)=3
(7)n=10时,
计算r(9)——返回3
计算r(8)——返回2
计算r(7)——返回1
计算r(6)——返回-1,④执行,所以r(10)=4
(8)n=11时,
计算r(10)——返回4
计算r(9)——返回3
计算r(8)——返回2
计算r(7)——返回1
计算r(6)——返回-1,⑤执行,所以r(11)=5
(9)n=12时,
计算r(11)——返回5
计算r(10)——返回4
计算r(9)——返回3
计算r(8)——返回2
计算r(7)——返回1
r=-1,即r(12)=-1
可以得出规律:
n=6 7 8 9 10 11 12 13 14 15 16
r(n)=-1 1 2 3 4 5 -1 1 2 3 4 5 -1 1 2 3 4 5
no.3
一、 ASCII码
将键盘上的所有键进行编号,就可看作ASCII码,必须记住:
空格 20H,即32
数字 0~9,ASCII码30H~39H,即48~57
字母 A~Z,ASCII码41H~5AH,即65~90
字母 a~z,ASCII码61H~6AH,即97~122
二、信息的单位
位——bit/b,表示0或1
字节——byte/B,网速 Mbps其中bps:位每秒,1B=8bit
扇区——512B
千字节——KB,1K=1024B=2扇区,需要记住:2E+10=1024
兆字节——MB,1M=1024K
吉字节——GB,1G=1024M
特字节——TB,1T=1024G
三、字符ASCII码占用大小
1个英文字符占用1个字节,1个汉字占用2个字节。
四、字库
点阵字(横向的点*纵向的点)、曲线字
24*24点阵,需要多少存储空间。24*24/8B=72字节,但ASCII码占2B
五、进制——2、8、10、16进制
在计算机内部,一切信息存取、处理和传递的形式是2进制。
机内码:使用94区*94位,其中16区1位,就是“啊”,一级汉字按拼音、二级汉字按部首
ASCII码是7位编号,存储时使用8位(即1B),其中最高位(左起第1位用于区分英文、中文)
地址码:以字节为单位,以16进制为准,从0#开始。
例:128KB的存储器用十六进制表示,它的最大的地址码是(______)。
知识点:凡是2的倍数,如从1#编号,地址码形式:10000……, 如果从0#开始,地址码形式:FFFFF……
128KB约等于128*1000B
FFFFF=15^5>10^5=100000B
六、2009年初赛阅读程序第2题
原代码(处理):
b[0]:=2b[1]:=3b[2]:=5
for i := 0 to 2 do begin
a[i] := 0
for j := 0 to i do begin
inc(a[i], b[j])
inc(b[a[i] mod 3], a[j])
end
end
分析:采用列表法:
i j a[0] a[1] a[2] b[0] b[1] b[2]
初始化 0 0 0 2 3 5
0 0 2 7
1 0 2 9
1 5 14
2 0 2 16
1 5 21
2 26 47
tmp := 1
for i := 0 to 2 do begin
a[i] := a[i] mod 10
b[i] := b[i] mod 10
tmp := tmp * (a[i] + b[i])
end
功能:个位数之和相乘
tmp:=(2+2)*(5+3)*(6+7)=4*8*13=416
================================================================================
七、常用进制——2、8、10、16进制
(1) 书写方式:(101)2、(127)8……
书写方式:(101)2、(101)16、……
书写方式:101B、101O、101D、101H……
(2)n进制:只能使用0、1、2、3、4、5……n-1、小数点、正负号
(3)进行四则运算:逢n进一、借一当n
加法:先本位相加,再考虑进位
减法:不够减先借位,再相减
乘法:先各位相乘,再相加、最后考虑进位
(4)进制转换
第1种类型:2、8、16→10进制
第2种类型:10→2、8、16进制
第3种类型:8→2→16进制
经验:公式条
2进制: ……8 4 2 1.1/2 1/4 ……
8进制: …… 64 8 1.1/8 1/64 ……
16进制: …… 256 16 1.1/16 1/256 ……
例题讲解:
与十进制数1770对应的八进制数是(______)。
A 3350
B 3351
C 3352
D 3540
分析:1770 mod 8 就是答案的个数,1770 mod 64就是答案的十位.
(2010)16+(32)8的结果是(______)。
A (8234)10
B (202B)16
C (20056)8
D (100000000110)2
分析:题目的值对8求余,结果=2
B、C、D对8求余<>2,所以答案为A
(3725)8+(B)16的运算结果是(______)。
A (3736)8
B (2016)10
C (1111110000)2
D (3006)10
E (7B0)16
分析:值=(3725)8+11=(3740)8=(011 111 100 000)2,答案为E
(2004)10 +(32)16的结果是(______)。
A (2036)10
B (2054)16
C (4006)10
D (100000000110)2
E (2036)16
分析:值=2004+50=2054,A/B/C/E不对
运算(-17) MOD (-4) 的结果是(______)。
A 7
B 4
C 1
D -1
分析:a mod b的正负以左边的a为准
八、写文件
assign(f,'tree.out')rewrite(f)
……
close(f)
#include "stdio.h"枯乱
#include "string.h"没悔档前轮
#define N 14
char array[N]
int len,max=0,d[15][15]
int p(int x,int y,int k)
void dd(int p,int q)
int main()
{
int i,j,times
char time
scanf("%s %c",array,&time)
times=time-48
len=strlen(array)
for(i=0i<leni++)
for(j=ij<lenj++)
dd(i,j)
p(0,len-times,times)
printf("%d\n",max)
return 0
}
void dd(int p,int q)
{
int pow(int a,int b)
int i,k,sum=0
for(i=q,k=0i>=pi--,k++)
sum=sum+(array[i]-48)*pow(10,k)
d[p][q]=sum
}
int pow(int a,int b)
{
int i,t=1
for(i=1i<=bi++)
t*=a
return t
}
int p(int x,int y,int k)
{
int big
if(k==0)
return d[x][y]
for(y=xy<len-ky++)
{
big=d[x][y]*p(y+1,len-k,k-1)
if(big>max)
max=big
}
return big
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)