【数论 Day2】基础归纳法 题目

来源:互联网 发布:java模糊查询 编辑:程序博客网 时间:2024/06/01 17:30

数论进入第二天的学习!今天的主题是基础归纳,这是一种重要的方法!

20170530-1数论_归纳

题解:http://www.cnblogs.com/ljc20020730/p/6920046.html

日期

序号

题目名称

输入文件名

输出文件名

时限

内存

算法

难度

分类

081105

1

烧水问题

heat.in

heat.out

1s

256MB

数学

2

03数论_归纳

120912

2

六边形

Hexagons.in

hexagons.in

1s

256M

数论

1

03数论_归纳

081106

3

最大子序和

max.in

max.out

1s

256MB

前缀和

2

03数论_前缀

111008

4

哥德巴赫矩阵

pmatrix.in

pmatrix.out

1s

128M

前缀和

2

03数论_前缀

1.烧水问题

【题目描述】

把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃。现需要把每一杯水都烧开。我们可以对任意一杯水进行加热。把一杯水的温度升高t℃所需的能量为(4200*t/n)J,其中,“J”是能量单位“焦耳”。如果一旦某杯水的温度达到100℃,那么这杯水的温度就不能再继续升高,此时我们认为这杯水已经被烧开。显然地,如果直接把水一杯一杯地烧开,所需的总能量为(4200*100)J

在烧水的过程中,我们随时可以在两杯温度不同的水之间进行热传递操作。热量只能从温度较高的那杯水传递到温度较低的那杯水。由于两杯水的质量相同,所以进行热传递操作之后,原来温度较高的那杯水所降低的温度总是等于原来温度较低的那杯水所升高的温度。

一旦两杯水的温度相同,热传递立刻停止。

为了把问题简化,我们假设:

没有进行加热或热传递操作时,水的温度不会变化。

加热时所花费的能量全部被水吸收,杯子不吸收能量。

热传递总是隔着杯子进行,n杯水永远不会互相混合。

热传递符合能量守恒,而且没有任何的热量损耗。

在这个问题里,只要求把每杯水都至少烧开一遍就可以了,而不要求最终每杯水的温度都是100℃。我们可以用如下操作把两杯水烧开:先把一杯水加热到100℃,花费能量(4200*100/2)J,然后两杯水进行热传递,直到它们的温度都变成50℃为止,最后把原来没有加热到100℃的那杯水加热到100℃,花费能量(4200*50/2)J,此时两杯水都被烧开过了,当前温度一杯100℃,一杯50℃,花费的总能量为(4200*75)J,比直接烧开所需的(4200*100)J少花费了25%的能量。

你的任务是设计一个最佳的操作方案使得n杯水都至少被烧开一遍所需的总能量最少。

【输入文件】输入文件只有一个数n(1n50000)

【输出文件】输出n杯水都至少被烧开一遍所需的最少的总能量,单位为J,四舍五入到小数点后两位。

【输入样例】2

【输出样例】315000.00

 

 

2.六边形(hexagons.pas/c/cpp)

【试题描述】有一个由小正六边形拼成的大六边形,对边的长度是相同的(形状如图)

(图中所示的是 a=2,b=3,c=4 的情况)

现在给出 a, b, c,求构成六边形的小正六边形的数量

【输入格式】 一行三个整数 a,b,c

【输出格式】一个整数表示答案

【输入样例】2 3 4

【输出样例】18

【数据规模】

2 <= a, b, c <= 1000

 

 

 

3.最大子序和

【题目描述】输入一个长度为N的整数序列(A1,A2,……,An),从中找出一段连续的长度不小于A,且不超过B的子序列,使得这个子序列的和最大。

例如:序列   1, -3, 5, 1, -2, 3

A=2B=2或3  S=5+1=6

A=3B=4  S=5+1+(-2)+3=7

【输入文件】第一行三个整数N,A,B(1<=A<=B<=N)

第二行为N整数,每个整数用空格隔开,表示该整数序列。

【输出文件】输出文件仅一个整数,为最大子序和。

【输入样例】

6 3 41 -3 5 1 -2 3

【输出样例】

7

【数据规模和约定】

对于30%的数据N<=1000;

对于100%的数据N<=500000

 

 

 

 

4.哥德巴赫矩阵

【题目描述】根据哥德巴赫猜想(每个不小于6的偶数都可以表示为两个奇素数之和),定义哥德巴赫矩阵A如下:对于正整数对(i,j),若i+j为偶数且i,j均为奇素数,则a[i,j]=1,否则a[i,j]=0。现在有若干询问(x1,y1,x2,y2),你需要回答的值是多少。

【输入格式】第一行一个整数m;

接下来m行,每行四个整数x1 y1 x2 y2,表示一个询问

【输出格式】m行,每行一个整数,表示对应询问的答案

【样例输入】

1

1 1 3 5

【样例输出】2

【数据范围】

30%的数据保证x2,y2,m≤100

100%的数据保证1≤x1≤x2≤106;1≤y1≤y2≤106;m≤1000 

 


原创粉丝点击