D. Multiples and Power Differences 巧妙的构造

D. Multiples and Power Differences 巧妙的构造

题目大意:

给你一个矩阵 \(a\) ,矩阵的大小是 \(n*m\)\(a[i][j]<=16\) ,让你构造一个矩阵 \(b\) ,要求:

  • \(b[i][j]<=1e6\)
  • \(b[i][j]\)\(a[i][j]\) 的倍数
  • 对于矩阵 \(b\) 来说,一个位置和他相邻(共享一条边)位置的数差值的绝对值是 \(k^4\)\(k>=1\)\(k\) 不一定要相同)

题解:

非常巧妙的想法

  • 因为 \(720720 = LCM(1,2,3,...,16)\)
  • 又因为 \(786256 = 720720+16^4 < 1e6\)
  • 之后可以自己想一想,很简单啦
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
typedef long long ll;
int a[550][550];
int solve(int x){
    return x*x*x*x;
}
int main(){
    int n,m,d = 720720;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            scanf("%d",&a[i][j]);
            if((i&1)&&(j&1)) a[i][j] = d;
            else if(!(i&1)&&!(j&1)) a[i][j] = d;
            else a[i][j] = solve(a[i][j]) + d;
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            printf("%d",a[i][j]);
            if(j==m) printf("\n");
            else printf(" ");
        }
    }
}
posted @ 2021-03-12 21:52  EchoZQN  阅读(60)  评论(0)    收藏  举报