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("
");
            else printf(" ");
        }
    }
}
原文地址:https://www.cnblogs.com/EchoZQN/p/14526594.html