Codeforces 610С — Harmony Analysis 找规律

来源:互联网 发布:程序员之路 编辑:程序博客网 时间:2024/04/30 04:53

Codeforces Round #337 (Div. 2)

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: find4 vectors in 4-dimensional space, such that every coordinate of every vector is1 or  - 1 and any two vectors are orthogonal. Just as a reminder, two vectors inn-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 for2k vectors in2k-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 of2k characters each. Thej-th character of the i-th line must be equal to ' * ' if thej-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
++   ++
+*    +*

++    **
+*    *+

可以看出左上,右上和左下三部分是相同的,右下部分是和其他三部分相反的。


#include<bits/stdc++.h>#define LL long longusing namespace std;int a[1025][1025];int main(){    int n;    cin>>n;    int t=1;    a[0][0]=1;    while(n--){        for(int i=0;i<t;i++){            for(int j=0;j<t;j++){                a[i+t][j]=a[i][j+t]=a[i][j];                a[i+t][j+t]=-a[i][j];            }        }        t<<=1;    }    for(int i=0;i<t;i++){        for(int j=0;j<t;j++){            if(a[i][j]==1)putchar('+');            else putchar('*');        }        printf("\n");    }    return 0;}




0 0