zoukankan      html  css  js  c++  java
  • cf 337 div2 c

    C. Harmony Analysis
    time limit per test
    3 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    The semester is already ending, so Danil made an effort and decided to visit a lesson on harmony analysis to know how does the professor look like, at least. Danil was very bored on this lesson until the teacher gave the group a simple task: find 4 vectors in 4-dimensional space, such that every coordinate of every vector is 1 or  - 1 and any two vectors are orthogonal. Just as a reminder, two vectors in n-dimensional space are considered to be orthogonal if and only if their scalar product is equal to zero, that is:

    .

    Danil quickly managed to come up with the solution for this problem and the teacher noticed that the problem can be solved in a more general case for 2k vectors in 2k-dimensinoal space. When Danil came home, he quickly came up with the solution for this problem. Can you cope with it?

    Input

    The only line of the input contains a single integer k (0 ≤ k ≤ 9).

    Output

    Print 2k lines consisting of 2k characters each. The j-th character of the i-th line must be equal to ' * ' if the j-th coordinate of the i-th vector is equal to  - 1, and must be equal to ' + ' if it's equal to  + 1. It's guaranteed that the answer always exists.

    If there are many correct answers, print any.

    Sample test(s)
    input
    2
    output
    ++**
    +*+*
    ++++
    +**+
    Note

    Consider all scalar products in example:

    • Vectors 1 and 2: ( + 1)·( + 1) + ( + 1)·( - 1) + ( - 1)·( + 1) + ( - 1)·( - 1) = 0
    • Vectors 1 and 3: ( + 1)·( + 1) + ( + 1)·( + 1) + ( - 1)·( + 1) + ( - 1)·( + 1) = 0
    • Vectors 1 and 4: ( + 1)·( + 1) + ( + 1)·( - 1) + ( - 1)·( - 1) + ( - 1)·( + 1) = 0
    • Vectors 2 and 3: ( + 1)·( + 1) + ( - 1)·( + 1) + ( + 1)·( + 1) + ( - 1)·( + 1) = 0
    • Vectors 2 and 4: ( + 1)·( + 1) + ( - 1)·( - 1) + ( + 1)·( - 1) + ( - 1)·( + 1) = 0
    • Vectors 3 and 4: ( + 1)·( + 1) + ( + 1)·( - 1) + ( + 1)·( - 1) + ( + 1)·( + 1) = 0

        假设把当前2 ^ k * (2 ^ k)分成左上,右上,左下,右下四个方阵,假设当前我们已知k - 1时的方阵,只要把左上,左下右上填成与k - 1相同方阵,右下填成

      与k - 1方阵反相即可。

      

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cmath>
     6 
     7 
     8 using namespace std;
     9 
    10 const int maxn = 520;
    11 char mar[maxn][maxn];
    12 int k;
    13 
    14 char invert(char x) {
    15     return x == '+' ? '*' : '+';
    16 }
    17 
    18 int main() {
    19     scanf("%d", &k);
    20     mar[0][0] = '+';
    21     for (int i = 1; i <= k; ++i) {
    22         int a = pow(2, i - 1);
    23         int b = pow(2, i);
    24         for (int r = 0; r < a; ++r) {
    25             for (int c = a; c < b; ++c) {
    26                 mar[r][c] = mar[r][c - a];
    27             }
    28         }
    29 
    30         for (int r = a; r < b; ++r) {
    31             for (int c = 0; c < a; ++c) {
    32                 mar[r][c] = mar[r - a][c];
    33             }
    34         }
    35 
    36         for (int r = a; r < b; ++r) {
    37             for (int c = a; c < b; ++c) {
    38                 mar[r][c] = invert(mar[r][c - a]);
    39             }
    40         }
    41     }
    42 
    43     int a = pow(2, k);
    44     for (int i = 0; i < a; ++i) {
    45         for (int j = 0; j < a; ++j) {
    46             printf("%c", mar[i][j]);
    47         }
    48         printf("
    ");
    49     }
    50 
    51 
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    Liquid模板语言参考文档
    Shopify主题title/description等SEO设置
    23个Shopify免费模板值得拥有
    navicate 激活
    idea 内存溢出
    mysql for update 使用说明
    quartz-SimpleSemaphore
    达梦数据库冷备份还原的简单记录
    Beyond Compare 的比较以及导出的简单设置方法
    PG13 离线安装的简单办法
  • 原文地址:https://www.cnblogs.com/hyxsolitude/p/5117897.html
Copyright © 2011-2022 走看看