【试题描述】
给出一个正整数n,然后对n进行一系列处理,处理用以下代码表示: 0 不做任何处理
1 对原数加上100, 若加上100后大于1000,则再减去1000. 2 对原数减去100, 若减去100后小于0,则再加上200 3 对原数除2取整
4 对原数乘4,若乘4之后大于1000,则除以1000取余数。 问 题:输入n,k后,将 n作为原数(1≤ n < 1000), k为处理码的十进制表示(1<k≤30000)。要求将k化为五进制的数,然后以该五进制数从高位到低位的顺序,分别将每位数字作为处理码对原数按上述规则进行处理,求处理后的结果。 【输入描述】n k (2个整数) 【输出描述】 处理后的结果 【输入样例】 33 247 【输出样例】 28 【解题提示】 样例说明:
k=247 化为五进制数:1442, 则处理系列为: 1 33+100=133 4 133*4=532
4 532*4=2128 (除以1000取余数,成为128) 2 128-100=28 所以输出28 program ex1764; var n,k,i,t,l:integer; st1,st2:string; begin
readln(n,k); st2:=''; repeat
t:=k mod 5; str(t,st1); st2:=st1+st2; k:=k div 5; until k=0; l:=length(st2); for i:=1 to l do case st2[i] of
'1':begin n:=n+100; if n>1000 then n:=n-1000;end; '2':begin n:=n-100;if n<0 then n:=n+200; end; '3':begin n:=n div 2; end;
'4':begin n:=n*4;if n>1000 then n:=n mod 1000;end; end; writeln(n); end.
输入 56 1249 输出 936 输入 512 20000 输出 612 输入 1000 30000 输出 200 Description
《贫民窟的百万富翁》获得2009年美国奥斯卡最佳影片,影片的主人公是一个叫贾马尔的小男孩,他在贫民窟长大,后来他参加了一档印度版的《谁想成为百万富翁》电视直播节目,他的特殊成长经历居然使他能够回答这个节目中的每一个问题,最后成功获得百万奖金。其中有一个题目是这样的:读入四个整数(0<每个整数<50000),判断这四个整数能否构成连续的四个奇数,如果可以就输出三行,每行一个等式,每个等式都满足“前一个数+2=后一个数”,否则请将这四个整数从大到小输出(数据之间以一个空格隔开)。 Input 一行,四个空格隔开的整数。( 0 < 每个整数 < 50000 ) Output
三行,每行一个等式 或 一行,从大到小排列的4个数 Sample Input 样例1: 17 13 11 15 样例2: 18 13 11 16 Sample Output 样例1: 11+2=13 13+2=15 15+2=17
样例2: 18 16 13 11 Hint
样例1中17、13、11、15可以构成连续的四个奇数11、13、15、17,所以就输出三个等式。样例2中的四个数据18、13、11、16不能构成连续的四个奇数,所以将他们从大到小输出。
program ex1285;
var a:array[1..4] of longint; t:longint; i,j:integer;
begin
for i:=1 to 4 do read(a[i]); readln;
for i:=1 to 3 do for j:=i+1 to 4 do
if a[i]>a[j] then begin t:=a[i];a[i]:=a[j];a[j]:=t; end; i:=1;
while (i<4) and (a[i]+2=a[i+1]) do inc(i);
if (i=4) and (a[1] mod 2<>0) then begin
writeln(a[1],'+',2,'=',a[2]); writeln(a[2],'+',2,'=',a[3]); writeln(a[3],'+',2,'=',a[4]); exit; end; for i:=4 downto 1 do write(a[i],' '); end.
输入 212 218 216 214 输出 218 216 214 212 输入 10057 10063 10061 10059 输出 10057+2=10059 10059+2=10061 10061+2=10063 【问题描述】
某片矿区含有丰富的矿产资源,有金银铜铁锡等,还有钻石呢。很多人前去淘金。你现在手上有一笔资金,可买到该矿山面积为S平方米的地域进行开采,你通过秘密途径搞到一份绝密资料,那就是该矿山的资源分布图。有了这些资料后,你准备买下哪块地进行开采,才能得到最大的效益。 【输入格式】
第一行为一个整数N(N<=100),表示矿山的边长。接下来是矿山的资源分布图,按单位平方米标记了每个点开采的价值,若为负数,表示开采将会亏本。最后一行为一个整数S,表示你可开采的面积(S<10000) 【输出格式】
输出开采后你的最大收益,注意你最大可以买S,你也可以买小于S的面积。为了规划,买的地域必须成矩形。 【输入样例】treasure.in 3 1 2 3 -1 2 4 -3 -2 3 4
【输出样例】treasure.out 11
枚举每一个矩形左上角的点,再枚举矩形的长和宽,计算最大值就可解决定义一个a[i,j],表示从点(1,1)到点(i,j)的矩阵之和,这样做可以使运算简单 var n,i,j,k,k1,max,s,s1,i1:longint;
g,a:array[0..100,0..100] of longint; begin
assign(input,'treasure.in'); assign(output,'treasure.out'); reset(input); rewrite(output); readln(n);
for i:=1 to n do
begin
for j:=1 to n do begin
read(g[i,j]);
a[i,j]:=a[i-1,j-1];
for i1:=1 to i-1 do a[i,j]:=g[i1,j]+a[i,j]; for i1:=1 to j-1 do a[i,j]:=g[i,i1]+a[i,j];
a[i,j]:=a[i,j]+g[i,j]; //统计从点(1,1)到点(i,j)的矩阵之和 end; readln; end;
readln(s1); max:=0;
for i:=1 to n do for j:=1 to n do begin
for k:=0 to n-i do //枚举长和宽
for k1:=0 to n-j do
if (k+1)*(k1+1)<=s1 then //如果这样的矩形符合要求
begin
s:=a[i+k,j+k1]-a[i+k,j-1]-a[i-1,j+k1]+a[i-1,j-1]; //请参见注释 if s>max then max:=s; end; end;
writeln(max);
close(input); close(output);
end.注释(关于矩形面积的计算):s=a[i3,j3]-a[i2,j2]-a[i4,j4]+a[i1,j1] 输入 6 1 2 4 5 7 9 -2 4 8 6 5 1 3 -4 5 6 2 9 5 8 -2 -3 6 7
计算
矩形1的面积,必须是总的大面积减去矩形3减去矩形2再加上矩形4的面积即
7 2 3 -5 -1 8 8 2 -3 -2 7 6 8 输出 46 输入 10
5 8 -9 12 34 56 11 -7 20 25 11 7 -8 9 15 -7 25 32 12 10 9 18 24 -15 -7 23 36 15 7 4 6 -2 -4 9 12 19 25 20 14 3 5 6 8 9 12 14 17 19 21 26 -9 -12 14 25 26 13 8 16 -5 24 10 12 15 7 3 1 -11 21 -4 28 24 26 32 19 15 -14 35 -12 6 8 4 6 2 3 7 8 9 -5 16 -12
21 26 30 34 28 -17 15 9 12 10 128 输出 1141
最大矩形(matrix.pas\\c\\cpp)
【题目描述】
一个N*M的矩阵,每个格子里面有个整数( 绝对值不大与10 ) ,每个子矩阵( 至少包含一个元素 )的价值就是它所包含的格子内的数的和。 现在求两个不相交的子矩阵(不包含相同的格子),使得他们的价值的乘积最大。 例如: N=3 , M=4,矩阵如图所示:
最大子矩阵值乘积为288。(左边两列的和为16,右边两列的和为18,结果为16*18=288)。
Input
输入文件matrix.in的第一行有两个数字n, m ( n, m < 100)。以后的n行,每行有m个整数。
Output
输出文件matrix.out只有一个数,即两不相交子矩阵价值乘积的最大值。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库noip普及组复赛模拟试题7(答案)在线全文阅读。
相关推荐: