zoukankan      html  css  js  c++  java
  • ural1979 Resources Distribution(构造)

    题意:

    给你一个n(100)阶魔方,共有6*n*n个块,让你填入1-6*n*n这些数字,要求使得从任意点出发朝任意方向绕一圈的和都相等,让你输出魔方 spj

    思路:

    绕圈每个点被饶了两次,也就是这些块的总贡献是这些数字的和*2,然后圈的数量也是一定的,是3*n,然后每一圈的和是相等的,所以也是固定的一个值

    然后发现每个点的两个圈里都有跟他对着的那个点包含在里面,所以对于每个点,只要是他和他对着的那个点的和等于圈的和/2n就可以满足条件了

    简直机智。。

    /* ***********************************************
    Author        :devil
    ************************************************ */
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <stack>
    #include <map>
    #include <string>
    #include <time.h>
    #include <cmath>
    #include <stdlib.h>
    #define LL long long
    #define rep(i,a,b) for(int i=a;i<=b;i++)
    #define dep(i,a,b) for(int i=a;i>=b;i--)
    #define ou(a) printf("%d
    ",a)
    #define pb push_back
    #define mkp make_pair
    template<class T>inline void rd(T &x)
    {
        char c=getchar();
        x=0;
        while(!isdigit(c))c=getchar();
        while(isdigit(c))
        {
            x=x*10+c-'0';
            c=getchar();
        }
    }
    #define IN freopen("in.txt","r",stdin);
    #define OUT freopen("out.txt","w",stdout);
    using namespace std;
    const int inf=0x3f3f3f3f;
    const int mod=1e9+7;
    const int N=1e2+10;
    int n,m1[N][N],m2[N][N<<2],now;
    int main()
    {
    #ifndef ONLINE_JUDGE
    //IN
    #endif
        scanf("%d",&n);
        int all=6*n*n+1;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                printf("%d%c",++now,j==n?'
    ':' ');
                m1[n-i+1][j]=all-now;
            }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                printf("%d ",++now);
                m2[i][n*3-j+1]=all-now;
            }
            for(int j=n+1;j<=n*2;j++)
            {
                printf("%d ",++now);
                m2[i][n*5-j+1]=all-now;
            }
            for(int j=n*2+1;j<=n*4;j++) printf("%d%c",m2[i][j],j==n*4?'
    ':' ');
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                printf("%d%c",m1[i][j],j==n?'
    ':' ');
        return 0;
    }
  • 相关阅读:
    如何让SAP S/4HANA的Material Fiori应用配置到Fiori Launchpad里
    SAP S/4HANA扩展字段创建过程的单步调试
    SAP S/4HANA扩展字段创建过程的单步调试
    使用ABAP代码创建SAP S/4HANA系统的扩展字段
    SAP Fiori里的Adapt UI按钮,神出鬼没的奥秘
    一步步把SAP GUI的事务码配置到SAP Fiori Launchpad里
    揭开SAP Fiori编程模型规范里注解的神秘面纱
    再谈OPENCV(转)
    JAVA随笔(二)
    计算机视觉数据集
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/6027861.html
Copyright © 2011-2022 走看看