zoukankan      html  css  js  c++  java
  • 687D: Dividing Kingdom II

    Codeforces Round #360 Editorial [+ Challenges!]


    B. Lovely Palindromes
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Pari has a friend who loves palindrome numbers. A palindrome number is a number that reads the same forward or backward. For example 12321, 100001 and 1 are palindrome numbers, while 112 and 1021 are not.

    Pari is trying to love them too, but only very special and gifted people can understand the beauty behind palindrome numbers. Pari loves integers with even length (i.e. the numbers with even number of digits), so she tries to see a lot of big palindrome numbers with even length (like a 2-digit 11 or 6-digit 122221), so maybe she could see something in them.

    Now Pari asks you to write a program that gets a huge integer n from the input and tells what is the n-th even-length positive palindrome number?
    Input

    The only line of the input contains a single integer n (1 ≤ n ≤ 10100 000).
    Output

    Print the n-th even-length palindrome number.
    Examples
    Input

    1

    Output

    11

    Input

    10

    Output

    1001

    Note

    The first 10 even-length palindrome numbers are 11, 22, 33, ... , 88, 99 and 1001.


    Hint

    Try to characterize even-length palindrome numbers.

    Solution

    For simplifications, in the following solution we define lovely integer as an even-length positive palindrome number.

    An even-length positive integer is lovely if and only if the first half of its digits is equal to the reverse of the second half.

    So if a and b are two different 2k-digit lovely numbers, then the first k digits of a and b differ in at least one position.

    So a is smaller than b if and only if the first half of a is smaller than the the first half of b.

    Another useful fact: The first half of a a lovely number can be any arbitrary positive integer.

    Using the above facts, it's easy to find the first half of the n-th lovely number — it exactly equals to integer n. When we know the first half of a lovely number, we can concatenate it with its reverse to restore the lovely integer. To sum up, the answer can be made by concatenating n and it's reverse together.

    The complexity of this solution is O(log n).

    C++ code

    //     . .. ... .... ..... be name khoda ..... .... ... .. .     \
    
    #include <bits/stdc++.h>
    using namespace std;
    
    inline int in() { int x; scanf("%d", &x); return x; }
    const long long N = 2002;
    
    int main()
    {
    	string s;
    	cin >> s;
    	cout << s;
    	reverse(s.begin(), s.end());
    	cout << s << endl;
    }


    Python code

    s = raw_input()
    print s + ''.join(reversed(s))


    原文链接:Codeforces Round #360 Editorial [+ Challenges!] - Codeforces


  • 相关阅读:
    vs运行代码版本不一致删除缓存
    spring framework 各版本源码下载地址
    类型初始值设定项引发异常
    datagridview 点击列标题排序
    软媒魔方u盘装系统
    sql中exists,not exists的用法
    java web第一个Servlet程序
    《ASP.NET 本质论》HttpApplication的处理管道 ,HttpMoudle,HttpHandler
    如何正确设置 Informix GLS 及 CSDK 语言环境
    Linux网络流量控制工具—Netem
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564664.html
Copyright © 2011-2022 走看看