回 帖 发 新 帖 刷新版面

主题:这52张牌怎么玩?你能教我吗?(此题已有些眉目了) 回复的都++30分

有52张扑克牌,使它们全部下面朝上。从第2张牌开始,把凡是2的倍数位置上的牌翻成下面朝下,接着从第3张牌开始,把凡是3的倍数位置上的牌下面朝上的番成下面朝下,正面朝下的翻成正面朝上,接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律翻转。依此类推,直到第2张要翻的牌是第52张牌为止。统计最后有几张牌正面朝上,并打印出它们的位置。
  晕!!!越看越晕……[em10]

回复列表 (共7个回复)

沙发

各位高手看看这题对不对!!

program;
var
a:=array[1..52] of integer;
i,k:integer;
begin
for i:=1 to 52 do
  k:=1;
  a[i]:=1;
if k mod i=0 then
  a[i]:=a[i]*-1;
else a[i]:a[i]*1;
  k:=k+1;
end;
if a[i]=1 then
writeln(i)
end.

板凳

恩 还不错 可不可以用回溯呢?

3 楼

麻烦写出来[em12]

4 楼

用搜索,似乎没有你编的简单。还有J,Q,K算是还是分别算11、12、13???
[em5]
[img]http://www.motorola.com.cn/pda/landing_page/pen.html[/img]

5 楼

初始条件没怎么看明白,我就假设一开始正面朝上
分析1~52这些数字2~52的约数个数,如果是奇数则是正面朝下,如果是偶数正面朝上。譬如:
52有因子2,4,13,26,52一共5个,所以正面朝下

6 楼

program;
var
a:=array[1..52] of integer;
i,k:integer;
begin
for i:=1 to 52 do
  k:=1;
  a[i]:=1;
if k mod i=0 then
  a[i]:=a[i]*-1;
{else a[i]:a[i]*1;}//这一句根本没有用,可以不要,留着只会拖运行时间
  k:=k+1;
end;
if a[i]=1 then
writeln(i)
end.

7 楼

我看不懂啊,真的好晕啊!!
[em10]

我来回复

您尚未登录,请登录后再回复。点此登录或注册