【题解】数学游戏
【题目描述】
Kri 喜欢玩数字游戏。 一天,他在草稿纸上写下了t 对正整数(x,y) ,并对于每一对正整数计算出了z=x*y*gcd(x,y);可是调皮的 Zay 找到了 Kri 的草稿纸,并把每一组的 y都擦除了,还可能改动了一些 z。
现在 Kri 想请你帮忙还原每一组的 y,具体地,对于每一组中的 x和 z,你需要输出最小的正整数 y,使得 z=x*y*gcd(x,y) 。如果这样的 y不存在,也就是 Zay 一定改动了z ,那么请输出 -1。 注:gcd(x,y) 表示 x和 y的最大公约数,也就是最大的正整数 d,满足 既是x 的约数,又是 y的约数。
【输入描述】
第一行一个整数 t ,表示有 对正整数 x和z 。
接下来 t 行,每行两个正整数 x和z ,含义见题目描述。
【输出描述】
对于每对数字输出一行,如果不存在满足条件的正整数y ,请输出-1 ,否则输出满足条件的最小正整 数 y。
【样例输入1】
1 10 240
【样例输出1】
12
【样例1解释】
x*y*gcd(x,y)=10*12*gcd(10,12)=240
【样例输入2】
3 5 30 4 8 11 11
【样例输出2】
6 -1 1
【数据范围】
对于20%的数据,t,x,z<=103。
对于40%的数据,t<=103, x<106, z<=109。
对于另30% 的数据,t<104 。
对于另20% 的数据,x<106 。
对于100%的数据,1<=t<=5*105, 1<=x<=109, 1<=z<=263 。
【题解】王国比赛
【题目描述】
智慧之王 Kri 统治着一座王国。 这天 Kri 决定举行一场比赛,来检验自己大臣的智慧。 比赛由 n道判断题组成,有 m位大臣参加。现在你已经知道了所有大臣的答题情况,但尚未拿到答 案,于是你决定先行预测。 具体来说,对于第 i道题,有 x个大臣选对, y个大臣选错(显然有x+y=m ),如果x>y,那 么你预测这题答案为对,否则为错。为了方便,我们保证 m是奇数。 在统计完成后,你拿到了答案,你想知道通过你的预测方式你最后有几道题预测正确。
【输入描述】
第一行两个正整数 n,m,保证m 是奇数。 接下来 m行,每行n 个整数,第i 行第j个整数 aij代表第 i位大臣对第 j道题的答案, 1表示他选 对, 0表示他选错。 接下来1 行 n个整数, 表示比赛答案, 第i 个数 bi若为 1表示第i 道题答案是对,若为 0表示答案是 错。
【输出描述】
输出一个整数,表示你最后有几题预测正确。
【样例输入1】
3 3 1 0 1 0 1 1 0 1 0 1 1 1
【样例输出1】
2
【样例1解释】
第一题 你预测答案为错(即0),实际答案为1,预测错误。
第二题 你预测答案为对(即1),实际答案为1,预测正确。
第三题 你预测答案为对(即1),实际答案为1,预测正确。 所以预测正确的题数为2。
【样例2输入】
5 6 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0
【样例2输出】
4
【数据范围】
对于20%的数据,n<=5,m=1 。
对于50%的数据,n<=10,m<=10 。
对于100%的数据, n<=1000 , m<=1000,m为奇数 。
【题解】报数游戏
【题目描述】
路飞在和他朋友们一块玩一个游戏。由于路飞的机智,这个游戏由路飞担任裁判。
首先,路飞会给他们一个人一个编号,并且每个人的编号都不相同。接下来的每一个回合,会给一个数,编号不超过它的最大编号
的人要报出自己的编号。如果没有人的编号比路飞给出的数要小,那么编号最小的人要报出自己的编号。每个人可以重复报号。
路飞会按照一个列表顺次报出每个回合的数,他的朋友们想知道每回合报出的编号应该是多少?
【输入描述】
输入数据共3行。
第一行有两个整数n,m( 1<=n<=105 , 1<=m<=105 ),分别表示参与游戏的路飞朋友的个数和游戏回合数。
第二行n个整数 ai (1<=ai<=108) ,表示朋友们每个人的编号。对于 0<=i<j<n, 都有 ai<aj,即他们的编号递增排列。
第三行m个整数 qi(1 <= qi <=108), 表示每回合路飞给的数字。
【输出描述】
输出共一行m个整数,表示每回合报出的编号,每两个整数之间一个空格,最后一个数后面没有空格。
【样例输入】
5 5 1 5 10 15 20 3 6 12 18 24
【样例输出】
1 5 10 15 20
【题解】东哥的杯子
【题目描述】
话说在一场牛客练习赛中,东哥力压群雄,挣得第一,牛客为了奖励东哥的发挥,送他一个马克杯。奖励的马克杯是一个标准的
圆台形状,它的上底为R1,下底为R2,高为H, 东哥向杯子里倒V毫升的水,你知道倒完水后,杯子里的水位有多高吗?
【输入描述】
多组数据
每组数据只有一行,为R1(1<=R1<=10,000),R2(1<=R2<=100,000), H(1<=H<=100,000),V(1<=V<=1000,000,000)。
【输出描述】
输出倒完水后的杯子的水位高,结果保留三位小数
【样例输入】
10 100 10 1000 1 1 1 10
【样例输出】
1.250 1.000
【公式】
r为上底半径、R为下底半径、h为高。
【题解】月度开销
【题目描述】
农夫约翰是一个精明的会计师。他意识到自己可能没有足够的钱来维持农场的运转了。他计算出并记录下了接下来N(1 ≤N≤ 100,000) 天里每天需要的开销。
约翰打算为连续的M(1 ≤M≤N) 个财政周期创建预算案,他把一个财政周期命名为fajo月。每个fajo月包含一天或连续的多天,每天被恰好包含在一个fajo月里。
约翰的目标是合理安排每个fajo月包含的天数,使得开销最多的fajo月的开销尽可能少。
【输入描述】
第一行包含两个整数N,M,用单个空格隔开。
接下来N行,每行包含一个1到10000之间的整数,按顺序给出接下来N天里每天的开销。
【输出描述】
一个整数,即最大月度开销的最小值。
【样例输入】
7 5 100 400 300 100 500 101 400
【样例输出】
500
【题解】均分蛋糕
【题目描述】
小明的生日要到了!根据习俗,他需要将一些派分给大家。
他有 N 个不同口味、不同大小的派。有 个朋友会来参加我的派对,每个人会拿到一块派(必须一个派的一块,不能由几个派的小块拼成;可以是一整个派)。
我的朋友们都特别小气,如果有人拿到更大的一块,就会开始抱怨。因此所有人拿到的派是同样大小的(但不需要是同样形状的),虽然这样有些派会被浪费,但总比搞砸整个派对好。当然,我也要给自己留一块,而这一块也要和其他人的同样大小。
请问我们每个人拿到的派最大是多少?每个派都是一个高为 ,半径不等的圆柱体。
【输入描述】
第一行包含两个正整数 n 和m ,表示派的数量和朋友的数量。(N>=1, F<=10000)
第二行包含 个 1 到 n之间的整数,表示每个派的半径
【输出描述】
输出每个人能得到的最大的派的体积,精确到小数点后三位。
【样例输入】
3 3
4 3 3
【样例输出】
25.133
【题解】切割绳子
【题目描述】
有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2位后的小数)。
【输入描述】
第一行两个整数N和K(0<N<=10000, 0<K<=10000),接下来N行,描述了每条绳子的长度Li(0<Li<=100000.00)。
【输出描述】
切割后每条绳子的最大长度。
【样例输入】
4 11 8.02 7.43 4.57 5.39
【样例输出】
2.00
【题解】木材加工
【题目描述】
 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是事先给定的,切割时希望得到的小段越长越好。
      编写程序,输入原木的数目 N 和需要得到的小段的数目 K以及各段原木的长度,计算能够得到的小段木头的最大长度。
      木头长度的单位是 cm。原木的长度都是正整数,要求切割得到的小段木头的长度也是正整数。
例如有两根原木长度分别为11和21,要求切割成到等长的6段,很明显能切割出来的小段木头长度最长为5.
【输入描述】
第一行是两个正整数N和K(1 ≤ N ≤ 100000,1 ≤ K ≤ 100000000),N是原木的数目,K是需要得到的小段的数目。
接下来的N行,每行有一个1到100000000之间的正整数,表示一根原木的长度。
【输出描述】
能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。
【样例输入】
3 7 232 124 456
【样例输出】
114
【题解】切割钢管
【题目描述】
小A是某工地的计算工程师。工地现有 n 根钢管,第 i 根钢管的长度为 ai。
现在想用这 n 根钢管来做一个支撑用的柱子。我么可以切割这些钢管成为更短的钢管,但是不能缝合两根钢管。为了安全起见,柱子必须用 至少 k 根长度相同的钢管加上混凝土制成,并且要求钢管长度必须为 整数。
小A想知道,这个柱子最高能建成多高(钢管可以有剩余)。
【输入描述】
输入第一行一个整数 
接下来一行输入 n 个空格隔开的整数 
【输出描述】
输出最大的高度。
【样例输入1】
2 4 8 4
【样例输出1】
2
【样例输入2】
8 8 12 3 14 12 14 20 4 8
【样例输出2】
7