UVA 10110 Light, more light【经典开灯问题】

Light, more light

Time Limit: 3000ms

Memory Limit: 131072KB

This problem will be judged on UVA.
Original ID: 10110

64-bit integer IO format: %lld     
Java class name: Main

Prev

Submit Status Statistics Discuss

Next

Type:

None

None Graph Theory 
    2-SAT     Articulation/Bridge/Biconnected Component
     Cycles/Topological Sorting/Strongly Connected Component
     Shortest Path 
        Bellman Ford         Dijkstra/Floyd Warshall
     Euler Trail/Circuit 
    Heavy-Light Decomposition     Minimum Spanning Tree
     Stable Marriage Problem 
    Trees     Directed Minimum Spanning Tree
     Flow/Matching 
        Graph Matching             Bipartite Matching
             Hopcroft–Karp Bipartite Matching
             Weighted Bipartite Matching/Hungarian Algorithm
         Flow 
            Max Flow/Min Cut             Min Cost Max Flow
 DFS-like 
    Backtracking with Pruning/Branch and Bound 
    Basic Recursion     IDA* Search 
    Parsing/Grammar     Breadth First Search/Depth First Search
     Advanced Search Techniques 
        Binary Search/Bisection         Ternary Search
 Geometry 
    Basic Geometry     Computational Geometry
     Convex Hull 
    Pick‘s Theorem Game Theory 
    Green Hackenbush/Colon Principle/Fusion Principle 
    Nim     Sprague-Grundy Number 
Matrix     Gaussian Elimination 
    Matrix Exponentiation Data Structures 
    Basic Data Structures     Binary Indexed Tree
     Binary Search Tree 
    Hashing     Orthogonal Range Search 
    Range Minimum Query/Lowest Common Ancestor 
    Segment Tree/Interval Tree     Trie Tree
     Sorting 
    Disjoint Set String 
    Aho Corasick     Knuth-Morris-Pratt 
    Suffix Array/Suffix Tree Math 
    Basic Math     Big Integer Arithmetic 
    Number Theory         Chinese Remainder Theorem
         Extended Euclid 
        Inclusion/Exclusion         Modular Arithmetic
     Combinatorics 
        Group Theory/Burnside‘s lemma         Counting
     Probability/Expected Value 
Others     Tricky 
    Hardest     Unusual 
    Brute Force     Implementation 
    Constructive Algorithms     Two Pointer 
    Bitmask     Beginner 
    Discrete Logarithm/Shank‘s Baby-step Giant-step Algorithm 
    Greedy     Divide and Conquer 
Dynamic Programming                  
Tag it!

[PDF Link]

Light, more light

The Problem

There is man named "mabu" for switching on-off light in our University. He switches on-off the lights in a corridor. Every bulb has its own toggle switch. That is, if it is pressed then the bulb turns on. Another press will turn it off. To save power consumption
(or may be he is mad or something else) he does a peculiar thing. If in a corridor there is `n‘ bulbs, he walks along the corridor back and forth `n‘ times and in i‘th walk he toggles only the switches whose serial is divisable by i. He does not press any
switch when coming back to his initial position. A i‘th walk is defined as going down the corridor (while doing the peculiar thing) and coming back again.

Now you have to determine what is the final condition of the last bulb. Is it on or off?

The Input

The input will be an integer indicating the n‘th bulb in a corridor. Which is less then or equals 2^32-1. A zero indicates the end of input. You should not process this input.

The Output

Output "yes" if the light is on otherwise "no" , in a single line.

Sample Input

3
6241
8191
0

Sample Output

no
yes
no

AC代码:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n;
    while(cin>>n,n)
    {

        int x=sqrt(n*1.0);
        if(x*x==n)
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;
    }
    return 0;
}
时间: 2024-11-17 17:33:28

UVA 10110 Light, more light【经典开灯问题】的相关文章

Light, more light UVA 10110

说说:题意大概就是给定一个数n,然后从1遍历到n,原本要输出的状态是no,然后再遍历过程中遇到n的因子就变一次状态.最后将最终的状态输出.解法的话,将这个过程模拟一遍也是可以的.但我们知道若n能被m整出,那么也必定能被n/m整除,所以若n不是平方数的话状态肯定变换偶数次.照这个思路,代码的效率也就提高不少啦~ 题目: Light, more light The Problem There is man named "mabu" for switching on-off light in

算法竞赛入门经典_3.1_数组_逆序输出_开灯问题

又是新的一天,继续更新. 今天进入了新的章节,数组和字符串 1.逆序输出问题: 先来看代码吧 #include <stdio.h> //逆序输出 2017-8-16 #define maxn 105 int a[maxn]; int main(int argc, char* argv[]) { //int a[maxn]; int x, n = 0; while (scanf("%d", &x) == 1) a[n++] = x; for (int i = n -

nyist 77 开灯问题

开灯问题时间限制:3000 ms | 内存限制:65535 KB 难度:1描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推.一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号.k≤n≤1000 输入 输入一组数据:n和k 输出 输出开着的灯编号 样例输入7 3样例输出1 5 6 7 #include<iostream>using

23. 开灯问题

题目: 有 n 盏灯,编号为 1 - n.第 1 个人把所有灯打开,第 2 个人按下所有编号为 2 的倍数的开关(这些灯将被关掉),第 3 个人按下所有编号为 3 的倍数的开关,以此类推.共有 k 个人,问最后有哪些灯开着.输入 n 和 k ,输出开着的灯的编号. k <= n <= 1000. 样例输入: 7 3 样例输出: 1 5 6 7 思路: 用一个 int 类型数组表示灯.将数组初始化为 -1 ,此为关闭状态.依次判断,最后输出值为 1 的灯的下标. 代码: #include <

HDU 1218 THE DRUNK JAILER【类开灯问题】

THE DRUNK JAILER Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 27268   Accepted: 16933 Description A certain prison contains a long hall of n cells, each right next to each other. Each cell has a prisoner in it, and each cell is locked

9509 开灯(dfs)

9509 开灯 时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC Description 有16的开关分别控制16盏灯,开关排列成4*4的矩形,这些开关有这样的关系: 你改变其中一个开关的状态,与其同行和同列的开关的状态也跟着改变.先给出一个这些开关的初始状态,要求将所有的开关都打开,让所有的灯都亮起来,要求按下开关的次数最少. 输入格式 第一行输入一个整数t,表示有多少个case,每个case之间有一空行,每个case输入一

9509 开灯

9509 开灯 时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC Description 有16的开关分别控制16盏灯,开关排列成4*4的矩形,这些开关有这样的关系: 你改变其中一个开关的状态,与其同行和同列的开关的状态也跟着改变.先给出一个这些开关的初始状态,要求将所有的开关都打开,让所有的灯都亮起来,要求按下开关的次数最少. 输入格式 第一行输入一个整数t,表示有多少个case,每个case之间有一空行,每个case输入一

开灯问题

有n盏灯,编号1-n.第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依次类推.一共有k个人,问最后由哪些灯开着? 输入n和k,1≤k≤n≤1000.输出开着的灯编号. 样例输入: 7 3 样例输出: 1 5 6 7 分析: 使用memset函数,将数组中一定长度中的内容替换成指定字符.其中有三个参数,第一个是需要替换的数组,第二个是替换的值,第三个是长度值,一般使用sizeof函数.

开灯问题(南阳oj77)

开灯问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推.一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号.k≤n≤100. 输入 输入一组数据:n和k 输出 输出开着的灯编号 样例输入 7 3 样例输出 1 5 6 7 #include<stdio.h>