P1146 硬币翻转

摘要:
P1146硬币翻转(超链接)我终于写这个题了,我太难了!正面为0,反面为1.m表示次数假设n=6,初始为正面000000将第2个至第6个翻转011111m=1定义变量k,表示不进行翻转的硬币。此时k=2(加粗)011111将除k以外的硬币翻转110000m=2k+1110000将除k以外的硬币翻转000111m=3k+1000111(继续)……111100m=4111100000001m=5直到k=n000001最后,将第1个至第5个翻转111111共6次可得出,当k从2变到n时需要n-1次加上第1次,得出共需要n次当n=8初始:0000000001111111m=10111111111000000m=21100000000011111m=30001111111110000m=41111000000000111m=50000011111111100m=61111110000000001m=70000000111111111m=8当n=10.12.14……代码实现如下:1#include2#include3usingnamespacestd;4intmain()5{6intn,a[200],i,j;7cin˃˃n;8for9a[i]=0;10cout˂˂n˂˂endl;11cout˂˂"0";12for13{14a[i]=1;15cout˂˂a[i];16}17cout˂˂endl;18intk;19for20{21for22{23if24a[j]=1;25else26a[j]=0;27}28for29{30if31a[j]=1;32else33a[j]=0;34}35for36cout˂˂a[j];37cout˂˂endl;38}39for40cout˂˂"1";41cout˂˂endl;42return0;43}不要抄袭,看看就好,希望给你提供思路。
P1146 硬币翻转超链接

我终于写这个题了,我太难了!

P1146 硬币翻转第1张

在做这道题的时候,我竟然在相关讨论里找到了这个?!

P1146 硬币翻转第2张

刚刚开始的我是这么想的我不会,管理员不会,所以我=管理员


规律如下:

n表示有几个硬币(偶数)。正面为0,反面为1.m表示次数 假设n=6, 初始为正面

000000

将第2个至第6个翻转

011111 m=1

定义变量k,表示不进行翻转的硬币。 此时k=2(加粗)

011111

将除k以外的硬币翻转

110000 m=2

k+1

110000

将除k以外的硬币翻转

000111 m=3

k+1

000111

(继续)……

111100 m=4

111100

000001 m=5

直到k=n

000001

最后,将第1个至第5个翻转

111111

共6次

可得出,当k从2变到n时需要n-1次 加上第1次,得出共需要n次

当n=8

初始:0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 1 m=1

0 1 1 1 1 1 1 1

1 1 0 0 0 0 0 0 m=2

1 1 0 0 0 0 0 0

0 0 0 1 1 1 1 1 m=3

0 0 0 1 1 1 1 1

1 1 1 1 0 0 0 0 m=4

1 1 1 1 0 0 0 0

0 0 0 0 0 1 1 1 m=5

0 0 0 0 0 1 1 1

1 1 1 1 1 1 0 0 m=6

1 1 1 1 1 1 0 0

0 0 0 0 0 0 0 1 m=7

0 0 0 0 0 0 0 1

1 1 1 1 1 1 1 1 m=8

当n=10.12.14……亦是如此。

这个题就实现了,回头一看,并不难。


代码实现如下:

1 #include<iostream>
2 #include<cstdio> 
3 using namespacestd;
4 intmain()
5 {
6     int n,a[200],i,j;
7     cin>>n;
8     for(i=1;i<=n;i++)
9         a[i]=0;
10     cout<<n<<endl;
11     cout<<"0"; 
12     for(i=2;i<=n;i++)
13 {
14         a[i]=1;
15         cout<<a[i];
16 }
17     cout<<endl;
18     intk; 
19     for(k=2;k<=n-1;k++)     
20 {
21         for(j=1;j<=k-1;j++)
22 {
23             if(a[j]==0)
24                 a[j]=1;
25             else
26                 a[j]=0; 
27 } 
28         for(j=k+1;j<=n;j++)
29 {
30             if(a[j]==0)
31                 a[j]=1;
32             else
33                 a[j]=0;     
34 }
35         for(j=1;j<=n;j++)
36             cout<<a[j];  
37             cout<<endl; 
38 } 
39     for(i=1;i<=n;i++)
40         cout<<"1";
41     cout<<endl;
42     return 0;
43 } 

不要抄袭,看看就好,希望给你提供思路。

免责声明:文章转载自《P1146 硬币翻转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C99规范通过Bochs分析Lilo启动Linux内核的过程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

解决安卓手机连接wifi总弹出“已登录到Wlan网络”

一些Android机型在连接到wifi时会不断提示,“如果你不小心打开了这个提示,你会跳转到一些广告网站。这是因为谷歌服务器会在本地Android系统通电后发送连接请求。”。一些手机制造商的工程师将此连接服务器设置到一些广告网站并登录网络“我们可以管理设备或手机模拟器的状态,还可以执行许多手机操作,如安装软件、升级系统、运行shell命令等。adb是连接安卓...

html2canvas踩坑日记

在html2canvas&lt;html2canvas(document.querySelector(“#capture”)).then(canvas=&gt;{document.body.appendChild(canvas)});//图片地址是文档。身体appendChild(画布);...

移动端媒体查询的一些尺寸参考

device-width是设备实际的宽度,不会随着屏幕的旋转而改变,因此并不适合开发响应式网站。比如iphone5s的屏幕分辨率宽为640,由于retina显示策略,当scale设置为1的时候,对应的media中取到的width为320,当scale设置为0.5的时候,width为640,而device-width始终是320。总结1.device-widt...

MySQL学习笔记:字符串前后补全0

遇到一个要求:如果位数小于6,则需要使用函数LPAD()和RPAD()自动完成6位。LPAD使用字符串padstr填充并完成左侧的str,直到其长度达到len个字符,并返回str。...

PHP 垃圾回收机制(转)

GC进程通常从每个会话开始运行。GC的目的是在会话文件过期__destruct/unset__destruct()析构函数后自动销毁和删除它们。PHP将使用全局变量session.gc_Probability和session.gc_advisor的值session.gc_Probability=1,...

winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

“,”Delete Data“,btn)==DialogResult.Yes){}V.多条件查询。如果用户没有输入任何内容或文本框为空,则查询所有内容。//设置两个常量条件stringtj1=”1=1“;stringtj2=”1=1”;//根据用户的输入更改条件。//如果用户输入名称If(name!=”“){tj1=“Namelike@name“;}//如果...