永发信息网

pascal 硬币翻转

答案:2  悬赏:20  手机版
解决时间 2021-01-22 23:54
4、硬币翻转
源程序名 coin. pas/c/cpp
输入文件名 coin.in
输出文件名 coin.out

在桌面上有一排硬币,共N枚,每一枚硬币均为正面朝上。现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N-1枚硬币(正面向上的被翻转为反面向上,反之亦然)。求一个最短的操作序列(将每次翻转N-1枚硬币成为一次操作)。

输入:
输入只有一行,包含一个自然数N(N为不大于100的偶数)。

输出:
输出文件的第一行包含一个整数S,表示最少需要的操作次数。接下来的S行每行分别表示每次操作后桌上硬币的状态(一行包含N个整数(0或1),表示每个硬币的状态:0——正面向上,和1——反面向上,不允许出现多余空格)。
对于有多种操作方案的情况,则只需输出一种。

样例:
coin.in
4

coin.out
4
0111
1100
0001
1111

说一下怎么做,原理是什么,给个标称
最佳答案
题目要求:对于有多种操作方案的情况,则只需输出一种
这样我们随便找一种就行了,我们可以这样想:
对于每一枚硬币,如果这枚硬币翻转奇数次的话,那么他就变成反面朝上了,由于n是偶数,我们可以将每一枚硬币都翻转n-1次,即可满足题目要求.由于每次翻转都要翻转n-1枚硬币,所以可以翻转n次,对于每一次,都有一枚硬币不翻转
程序如下:
var n,i,j:longint;
a:array[1..500] of longint;

begin
read(n);

writeln(n);
for i:=1 to n do begin
for j:=1 to n do if i<>j then
if a[j]=0 then a[j]:=1 else a[j]:=0;
for j:=1 to n do write(a[j]);
writeln;
end;

end.
全部回答
var a,b,c,s:integer; begin   s:=0;   for c:= 1 to 20 do     for b:=1 to 50 do     for a:=1 to 100 do     if a+2*b+5*c=100 then     begin     s:=s+1;     writeln(a,' ',b,' ' ,c);     end;    writeln('s=',s); end.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
睿思教育培训中心(锦州北镇)地址好找么,我有
— You look so healthy!— Yeah, I like eat
北镇市快乐学习培训中心地址有知道的么?有点
艺派少儿美术培训中心地址有知道的么?有点事
孙楠舞蹈艺术学校地址在什么地方,想过去办事
This is the second letter that he has him
我16岁,可以挂胡子了吗?
锦州万翀美术学校地址在哪,我要去那里办事,
北镇市嘉睿文化培训学校地址在什么地方,我要
博雅教育地址在什么地方,想过去办事,
停机保号,还能上网吗?
通博电脑学校地址有知道的么?有点事想过去!
英语,said to 是对谁说?
春雨音乐舞蹈教育学校地址在什么地方,想过去
教准快乐开始英语教育地址在什么地方,想过去
推荐资讯
吏禄三百石的石到底读什么?
填空题如图,在使用扳手拧螺母时,在远离螺母
2011年,江苏省民间投资达1.4万亿元,占全社
如图所示,图1中的电压表表盘都如图2,闭合开
墨鱼要怎么炒才好吃?
飞利浦(夏商百货店)地址在什么地方,我要处理
放开那三国2极限阵容到底该怎么玩
全民k歌用微信登陆上传百分之百还是失败怎么
国色天香停车场(出入口)地址在哪,我要去那里
乐薇loveit美妆shop地址在哪,我要去那里办事
题图所示,袋鼠妈妈将小袋鼠放进育儿袋中后,
单选题人在呼吸时,下列说法中正确的是A.人吸
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?