其他分享
首页 > 其他分享> > Codeforces 1485D - Multiples and Power Differences (构造)

Codeforces 1485D - Multiples and Power Differences (构造)

作者:互联网

Codeforces Round #701 (Div. 2) D. Multiples and Power Differences


题意

给定\(n*m\)的矩阵\(A\),要求构造出一个\(n*m\)的矩阵\(B\),满足

限制

\(1\le n,m\le 500\)

\(1\le a_{i,j}\le 16\)




思路

注意到\(1\le a_{i,j}\le 16\),首先想到的是应当先求出一个数\(d\),且\(1\)到\(16\)任一数字都是\(d\)的因子

\(16!\)显然过大,所以\(d=lcm\{1,2,\cdots ,16\}=720720\lt 10^6\)

然后可以假设\(B\)矩阵所有元素都是\(d\),但题目要求的是相邻差值为某个正整数的四次方

所以可以错位令其加上\(A\)矩阵中数的四次方,使得:

对于任意一个值为\(d\)的位置,它与四周元素的差值为四周元素值的四次方

对于任意一个值不为\(d\)的位置,它的四周元素值均为\(d\)(差值即自身的四次方)


代码

#include<bits/stdc++.h>
using namespace std;

const int d=2*2*2*2*3*3*5*7*11*13; //lcm(1~16)

int main()
{
    int n,m,a;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&a);
            if((i+j)&1)
                printf("%d",d);
            else
                printf("%d",d+a*a*a*a);
            putchar(j==m?'\n':' ');
        }
    return 0;
}

标签:le,Power,16,int,Differences,矩阵,Codeforces,四次,元素
来源: https://www.cnblogs.com/stelayuri/p/14399689.html