pascal 题目

[复制链接]
查看11 | 回复1 | 2010-7-31 19:19:29 | 显示全部楼层 |阅读模式
古代某个国王想奖励某大臣,国王问他的大臣:你想要什么。大臣答到:在64格棋盘上,在第1格放1粒小麦,在第2格放2粒,第3格放4粒,第4格放8粒,依此类推,一直放到第64格。国王听了非常高兴,因为他认为总共才64格,能放多少麦子呢?可等到士兵报告时,国王惊呆了,全年全国所有的麦子送给大臣都不够呢!
请问:(1)求前g格共有的小麦数
(2)如果,国王限制该大臣所得的奖励不能超过m,请问士兵只要将前面几个格子按规定放满就可以了?
Input
输入两个整数g和m,用空格间隔
Output
输出两个整数,用空格间隔,分别为第一问和第二问的答案。
Sample Input
2 0
Sample Output
3 0
program va11;
var
m,g,i,j,s:integer;
begin
i:=1;j:=1;s:=0;
readln(g,m);
while j=g do
begin
i:=i*2;
j:=j+1;
end;
s:=s+i;
write(s,' ');
i:=1;j:=1;
while i>m do
begin
i:=i*2;
j:=j+1;
end;
write(j);
end.
哪错了 要详细的才给分!!

回复

使用道具 举报

千问 | 2010-7-31 19:19:29 | 显示全部楼层
program va11;varj,g:integer; m,i,s:int64;{m,i,s的范围注意}begin readln(g,m); i:=1;j:=0;s:=0;{j初值赋为0} whilej<g do {循环的条件是j<g}begin
j:=j+1;{计数器加1} s:=s+i;{累加} i:=i*2;end; write(s,' '); i:=1;j:=0;s:=0;{初值} while s<m do{循环条件}begin j:=j+1; i:=i*2; s:=s+i;end; writeln(j);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行