一道简单的Pascal语言题目(中学)(1) pascal语言简单的题目(我要完整的程序)
\u4e00\u9053\u7b80\u5355\u7684Pascal\u8bed\u8a00\u7f16\u7a0b\u9898\uff08\u4e2d\u5b66\uff09const
inf='chore.in';
ouf='chore.out';
type
line=^rec;
rec=object
num : longint;
next : line;
end;
graph=object
int : longint;
con, pre : line;
end;
var g : array[1..13000] of graph;
head, ph : array[1..13000] of line;
a, f, v : array[1..13000] of longint;
n : longint;
procedure initial;
var i, num, x, tot : longint;
procedure connect(s, e : longint);
var p : line;
begin
p:=g[s].con;
new(g[s].con);
g[s].con^.num:=e;
p^.next:=g[s].con;
p:=g[e].pre;
new(g[e].pre);
g[e].pre^.num:=s;
p^.next:=g[e].pre;
end;
procedure toposort;
var v, h, t : longint;
p : line;
begin
h:=0; t:=tot;
while t<n do begin
inc(h);
v:=a[h];
p:=head[v]^.next;
while pnil do begin
dec(g[p^.num].int);
if g[p^.num].int=0 then begin
inc(t);
a[t]:=p^.num;
end;
p:=p^.next;
end;
end;
end;
begin
readln(n);
for i:=1 to n do begin
new(head[i]); new(g[i].con);
head[i]:=g[i].con;
new(ph[i]); new(g[i].pre);
ph[i]:=g[i].pre;
end;
for i:=1 to n do begin
read(num);
read(v[i]);
read(x);
while x0 do begin
inc(g[num].int);
connect(x, num);
read(x);
end;
end;
tot:=0;
for i:=1 to n do begin
if g[i].int=0 then begin
inc(tot);
a[tot]:=i;
end;
g[i].con^.next:=nil;
end;
toposort;
end;
procedure main_process;
var i, ans, value : longint;
p : line;
begin
ans:=0;
for i:=1 to n do begin
p:=ph[a[i]]^.next;
value:=0;
while pnil do begin
if value<f[p^.num] then value:=f[p^.num];
p:=p^.next;
end;
f[a[i]]:=value+v[a[i]];
if ans<f[a[i]] then ans:=f[a[i]];
end;
writeln(ans);
end;
begin
assign(input,inf); reset(input);
assign(output,ouf); rewrite(output);
initial;
main_process;
close(output);
close(input);
end.
\u5148\u505a\u4e00\u4e2a
\u9898\u4e09
Program succor;
var a,b:array[1..100] of longint;
m,i,j:integer;
t,n:longint;
f:boolean;
fg,eg:text;
Begin
assign(fg,'succor.in');
reset(fg);
assign(eg,'succor.out');
rewrite(eg);
readln(m);
read(fg,a[1]); b[1]:=1;
i:=1;
repeat
i:=i+1;
b[i]:=0; f:=true;
read(fg,n);
for j:=1 to i-1 do
if n=a[j] then begin b[j]:=b[j]+1; f:=false; end;
if f then begin a[i]:=n; b[i]:=b[i]+1; end;
until i=m;
for i:=1 to m-1 do
for j:=i+1 to m do begin
if b[i]<b[j] then begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
t:=b[i]; b[i]:=b[j]; b[j]:=t; end;
if b[i]=b[j] then
if a[i]>a[j] then
begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;
end;
write(eg,a[1]);
for i:=2 to m do if a[i]0 then
write(eg,'->',a[i]);
close(fg);
close(eg);
Writeln('Press [Enter] to continue ... ');
Readln;
End.
const rmb:array[1..10]of integer=(1000,500,200,100,50,20,10,5,2,1);//先把面值存进数组里,便于后面使用
var b:real;a,tot:longint;i:integer;ans:array[1..10]of longint;
begin
readln(b);
a:=trunc(b*100);//转换成以分为单位的钱数,便于计算
for i:=1 to 10 do//从10元开始枚举
begin
if a>rmb[i] then begin//一旦能够“换开”
inc(ans[i],a div rmb[i]);//记下来用了多少张
inc(tot,a div rmb[i]);//同上
dec(a,a div rmb[i]*rmb[i]);//总钱数里减去“换开”的面值
end;
if a=0 then break;//一旦全部换开了就不用在试了
end;
writeln(tot);//接下来就是输出了
for i:=1 to 10 do
writeln(rmb[i]/100:0:2,ans[i]);
end.
中学的,真强啊,
我们在大学才接触到计算机呀!
这个是一个算法思路!
从大到小的分法。
X div 10
再(X MOD 10)DIV 5
再(X MOD 5)DIV 2
以此类推!
楼下的太弱了吧,我才初一啊!
算法就是:
1、把钱数扩大一百倍(整数方便运算,pascal的real数据类型很麻烦的)
也就是总数变成1732,然后10元变1000...
2、10元的钱数:=总数 div 1000,
然后总数:=总数 mod 1000,
5元的钱数:=总数 div 500,
然后总数:=总数 mod 500,
...
是有点长可算法很简单,不用动脑
1L确实很弱的说...
我也是中学.
这就是一个贪心算法.因为无论怎样都可以凑到你想要的钱,所以只需要竟可能取面值大的就可以了.
楼下说的很详细了,乘以100确实方便.
绛旓細棰樼洰鍚嶇О 闄堕櫠鎽樿嫻鏋 鏍¢棬澶栫殑鏍 鏄庢槑鐨勯殢鏈烘暟 鐗规畩鐨勮川鏁拌倠楠 浠e彿 apple tree random sprime 杈撳叆鏂囦欢 apple .in tree .in random .in sprime .in 杈撳嚭鏂囦欢 apple .out tree .out random .out sprime .out 鏃堕檺 1绉 1绉 1绉 1绉 绗竴棰 闄堕櫠鎽樿嫻鏋 (apple.pas/c/cpp)銆愰棶棰樻弿杩般戦櫠闄...
绛旓細s1:=' '+upcase(s1)+' '; 鏄负浜嗗垽瀹氱涓涓崟璇嶅拰鏈鍚庝竴涓崟璇嶆柟渚匡紙鍙互涓庝腑闂寸殑鍗曡瘝浠ュ悓鏍风殑浠g爜鍒ゅ畾锛塮or i:=1 to {length(s2)-l+1} do 涓句緥璇达紝s2闀垮害涓100锛岃宻1闀垮害涓10銆傚垯寰幆涓篺or i:=1 to 91 do灏辨槸璇磗1鍦╯2涓殑璧风偣锛屾渶鍚庡彲鑳戒綅缃槸91寮濮嬬殑銆俰f p=-1 then p:...
绛旓細杈撳嚭:4(3)=13+15+17+19=64銆愮▼搴35銆戞潵鑷笉鍚屽浗瀹剁殑鍥涗綅鐣欏鐢烝,B,C,D鍦ㄤ竴璧蜂氦璋,浠栦滑鍙細涓佽嫳銆佹硶銆佹棩鍥涚璇█涓殑2绉,鎯呭喌鏄,娌℃湁浜烘棦浼氭棩璇張浼氭硶璇;A浼氭棩璇,浣咲涓嶄細,A鍜孌鑳戒簰鐩镐氦璋,B涓嶄細鑻辫,浣咥鍜孋浜よ皥鏃跺嵈瑕丅褰撶炕璇,B,C,D涓変釜鎯充簰鐩镐氦璋,浣嗕笉鍒板叡鍚鐨勮瑷,鍙湁涓绉嶈瑷3浜洪兘浼,...
绛旓細2銆佸鍦衡斺斾笌涓诲満鐩稿弽銆傛妸閭e満鍦ㄥ闃熺殑鍦板尯杩涜鐨勬瘮璧涙椂锛屽彨鍋氳繖涓悆闃熺殑瀹㈠満姣旇禌锛堝彇鎰忎簬鍘绘箹鍗楀仛瀹汉鍙傚姞姣旇禌锛夈備妇渚嬶細鍦ㄦ祹鍗楄繘琛岀殑閭d竴鍦烘瘮璧涳紝灏卞彨婀栧崡闃熺殑瀹㈠満锛岃屽湪闀挎矙杩涜鐨勯偅涓鍦烘瘮璧涳紝灏卞彨灞变笢闃熺殑瀹㈠満銆3銆佸叧浜棰樼洰鐨勬牱渚嬭緭鍏モ斺旀牱渚嬫槸涓涓闃靛舰鍔垮浘锛屾垜浠潵鐪嬩竴涓嬶紝浠ョ浜岀粍鏍蜂緥鏉ヨ...
绛旓細1銆佽緭鍏ヤ袱涓暣鏁癮,b锛岃緭鍑哄畠浠殑鍜(|a|,|b|<=10^9)銆 娉ㄦ剰 1銆pascal浣跨敤integer浼氱垎鎺夊摝锛2銆佹湁璐熸暟鍝︼紒3銆乧/c++鐨刴ain鍑芥暟蹇呴』鏄痠nt绫诲瀷锛岃屼笖鏈鍚庤return 0銆傝繖涓嶄粎瀵规礇璋峰叾浠棰樼洰鏈夋晥锛岃屼笖涔熸槸noip/noi姣旇禌鐨勮姹傦紒濂藉惂锛屽悓蹇椾滑锛屾垜浠氨浠庤繖涓棰樺紑濮嬶紝鍚戠潃澶х墰鐨勮矾杩涘彂銆傗滀换浣曚竴涓...
绛旓細鎴戞兂瑕佷竴浜涘叧浜庡皬瀛︾敓绔炶禌鐨勪竴浜pascal鐨勯鐩,鏄皬瀛︾敓鐨勩 灞曞紑 鎴戞潵绛 6涓洖绛 #鐑# 璇ヤ笉璇ヨ瀛╁瓙寰堟棭瀛︿範浜烘儏涓栨晠? 闆ㄥ贩鐙傛墠 2010-05-18 鐭ラ亾绛斾富 鍥炵瓟閲:10 閲囩撼鐜:0% 甯姪鐨勪汉:0 鎴戜篃鍘荤瓟棰樿闂釜浜洪〉 鍏虫敞 灞曞紑鍏ㄩ儴 銆愰『搴忕粨鏋勯鐩1銆 杈撳叆鍦嗙殑鍗婂緞,杈撳嚭鍦嗙殑闈㈢Н鍜屽懆闀...
绛旓細涓閬揚ascal灏忛棶棰,鎬!!! 涓嬮潰鏄竴閬揚ascal灏忕▼搴弍rogramt2;constn=200;varsi,pr:setof2..n;x,j,m:integer;beginreadln(m);si:=[2..m];pr:=[];x:=2;repeatwhilenot(xinsi)dox:=succ(x);pr:=pr+[x];j:=x;whilej... 涓嬮潰鏄竴閬揚ascal灏忕▼搴弍rogram t2;const n=200;var si,pr:set of 2.....
绛旓細鍒濅竴Free pascal璇█棰樼洰 棰1銆佹眰Sn=a+aa+aaa+鈥+aa鈥涔嬪,鍏朵腑a鏄竴涓暟瀛椼備緥濡:2+22+222+2222+22222(姝ゆ椂n=5),n鐢遍敭鐩樿緭鍏ャ傞2銆佹墦鍗100-999涔嬮棿鎵鏈夌殑鈥滄按浠欒姳鏁扳濄傗滄按浠欒姳鏁扳濇槸涓涓笁浣嶆暟,鍏跺悇... 棰1銆佹眰Sn=a+aa+aaa+鈥+aa鈥 涔嬪,鍏朵腑a鏄竴涓暟瀛椼備緥濡:2+22+222+2222+22222...
绛旓細1.var a,b:integer;begin readln(a,b);writeln(a+b);end;2.var s:real;begin s:=(8+12)*9/2;writeln(s:2:2)end.3.var a:integer;ge,bai,shi:integer;begin readln(a);ge:=a mod 100;bai:=a div 100;shi:=a-ge-bai*100;weiteln(ge,bai,shi);end.4.var a:array[1..3...
绛旓細<maxlongint锛夛紝璁$畻瀹冨悇浣嶆暟瀛椾笂鐨勫拰銆傛牱渚嬭緭鍏ワ細35829083 鏍蜂緥杈撳嚭锛38 锛堟彁绀猴細鍙互鐢╳hile寰幆瀹屾垚姝ら锛塿ar s:string;x:longint;a,b,c,d:integer;begin readln(x);str(x,s);d:=0;for a:=1 to length(s) do begin val(s[a],b,c);d:=d+b;end;writeln(d);end....