hdoj-2053-Switch Game
2016-03-19 14:00
295 查看
Switch Game
题目:switch game题目大意:在一条街上有好多灯,第i次操作调整第ki盏灯(即是i的倍数),即原来灯是关(0)的调为开的(1),或者原来灯是开的调为关的。
输入一个整数n,判断第n盏灯在经过无数次操作以后,它的亮暗情况(0/1)。
解题方法1:
无数次操作只有前n次对第n盏灯有效,那么我用一个循环的嵌套即可以解决问题:最外围的for循环代表遍历第i盏灯(i<=n),里面的for循环判断n是否是i的倍数,是的话进行操作。最后输出第n盏灯的亮暗情况。
这是常规的解题思路,那么也是我的解题思路,我是不可能一次AC的
:(hah。评测结果是TLE。问题也很好找:n太大了怎么办。
我进行了一系列降低题目复杂度的测试,结果只要是两个以上的循环都是TLE。
其实,有时候把问题想的太复杂了,不是吗?
这道题目只需要判断第n盏灯就可以了,和前面的n-1盏灯后面的无穷多盏灯一点关系都没有。代码如下:
解法:
#include<stdio.h> int main() { int n,i,j,a=0; while(scanf("%d",&n)!=EOF) { a=0;//第n盏灯的状态变量a初始化置为0 for(i=1;i<=n;i++) if(n%i==0)a=!a;//有效操作把a的值置反 printf("%d\n",a); } return 0; }
一共13行代码,我原先的解法是它的两倍有余。有时候编程的乐趣就在这里,当你发现一个非常简单的算法的时候,你会很为其感到不可思议和非常excited。
简单易懂,没有多余亘长的语句,希望我也有一天能够做到像他们一样。
相关文章推荐
- 《算法竞赛入门经典》习题及反思
- 高精度N的阶乘-N!
- 列举一些有所帮助的blog和文章
- hdoj-2039-三角形
- hdoj-2035-人见人爱a^b
- codeforces 655D D. Robot Rapping Results Report(拓扑排序+拓扑序记录)
- C#中的try catch finally
- 振兴中华--蓝桥杯
- swfupload 禁掉了IE9的javascript 的运行,解决方案如下
- hdoj-2028-Lowest common multiple plus
- hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b
- 程序设计第三次作业---C++计算器雏形
- 《C语言程序设计》指针篇<二>
- 《C语言程序设计》指针篇<一>
- 《算法竞赛入门经典》刘汝佳 C语言部分(前四章)“注解与习题” 之思索 <1>
- 程序设计第二次作业<2>
- 程序设计第二次作业<1>
- 第一次面向对象程序设计作业-大一下学期的自我目标
- A.S. -prompt tips -2b contnd.
- Backbone的使用方法