pascal题目,有52张朴克牌,使它们全部正面朝上.从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 00:48:26
pascal题目,有52张朴克牌,使它们全部正面朝上.从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成
pascal题目,
有52张朴克牌,使它们全部正面朝上.从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律依此类推,直到第1张要翻的牌是第52张为止.统计最后有几张牌正面朝上,并打印出它们的位置.
pascal题目,有52张朴克牌,使它们全部正面朝上.从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下,正面朝下的翻成
第1张要翻的牌是第52张,不就是到了52的倍数为止吗.
这样:
var a:array[1..52] of boolean;
i,j:integer;
begin
fillchar(a,sizeof(a),true);//设true为正面朝上
for i:=1 to 52 do begin
for j:=1 to 52 do begin
if i*j>52 then break;
a[i*j]:=not a[i*j];
end;
end;
j:=0;
for i:=1 to 52 do if a[i] then inc(j);
writeln(j);
for i:=1 to 52 do if a[i] then write(i,' ');
end.