目录

题目链接

AGC027 D - Modulo Matrix

题解

从第左上角第一个点开始染色,相邻不同色,染法唯一

那么一个点的四周与他不同色,我们另这个点比四周都大,那么这个点权值可以使lcm(四周的点权值)+1

于是我们就得到了一种构造方案,染色后对一种颜色的点进行赋值,然后另一种颜色的点取lcm

可是....直接这样瞎构造会爆掉1e15

对于一种染色点,可以按照i + j和i - j分为两类,每一类乘上一个相同的质数

对于当前格子的价值就是从左上角到右下角,和从右上角到左下角穿过他的第k素数乘积

这样构造的lcm最大就是四个素数(prime[n],prime[n - 1],prime[2 * n],prime[2 * n - 1])的乘积

不会超过1e15

代码

#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
#define gc getchar()
#define pc putchar
#define LL long long
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9') c = gc;
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
void print(LL x) {
if(x < 0) {
pc('-');
x = -x;
}
if(x >= 10) print(x / 10);
pc(x % 10 + '0');
}
const int maxn = 20007;
int n;
int prime[maxn];
bool vis[maxn];
void pre(int lim = 10000) {
for(int cnt = 0,i = 2;i <= lim;++ i) {
if(!vis[i]) prime[++ cnt] = i;
for(int j = 1;j <= cnt && prime[j] * i <= lim;++ j) {
vis[i * prime[j]] = 1;
if(i % prime[j] == 0) break;
}
}
}
LL a[507][507];
LL gcd(LL x,LL y) {
return y == 0 ? x : gcd(y,x % y);
}
LL lcm(LL x,LL y) {
return x / gcd(x,y) * y;
}
int main() {
n = read();
pre();
if(n == 2) {
pc('4');pc(' ');pc('7');pc('\n');
print(23);pc(' '); print(10); pc('\n');
return 0;
}
for(int i = 0;i <= n + 1;++ i)
for(int j = 0;j <= n + 1;++ j)
a[i][j] = 1;
for(int i = 1;i <= n;++ i)
for(int j = 1;j <= n;++ j) {
if((j & 1) == (i & 1)) {
a[i][j] = prime[(i + j) / 2] * prime[(i + n + 1 - j) / 2 + n];
a[i + 1][j] = lcm(a[i + 1][j],a[i][j]);
a[i - 1][j] = lcm(a[i - 1][j],a[i][j]);
a[i][j + 1] = lcm(a[i][j + 1],a[i][j]);
a[i][j - 1] = lcm(a[i][j - 1],a[i][j]);
}
}
for(int i = 1;i <= n;++ i)
for(int j = 1;j <= n;++ j)
if((i & 1) == (j & 1));
else a[i][j] ++;
for(int i = 1;i <= n;++ i,pc('\n'))
for(int j = 1;j <= n;++ j)
print(a[i][j]),pc(' ');
return 0;
}

最新文章

  1. 一道Apple公司(中国)的面试题目
  2. 简谈switch case
  3. SQL Server如何启用xp_cmdshell组件
  4. 亲和数[HDU2040]
  5. JavaScript中对于闭包的理解
  6. libxml2 crash
  7. JSFのAjaxタグのoneventでbegin/complete/successを使う
  8. c# winform textbox与combox让用户不能输入
  9. codevs 1222 信与信封问题(二分图的完美匹配)
  10. (转)QT常用快捷键
  11. Linux网络管理——TCP/IP四层模型
  12. 基于Qt下移动平台第三方接入-ShareSDK(新浪微博,微信朋友圈等分享登录)
  13. cocos2d-x3.0数据结构
  14. 深入浅出mybatis之启动详解
  15. Xilinx Vivado的使用详细介绍(5):调用用户自定义封装的IP核
  16. JavaScript图片上传前的图片预览功能
  17. Confluence 6 修改日志文件的目标位置
  18. numpy delete
  19. PR2017添加字幕文本或文字水印
  20. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解

热门文章

  1. python cookbook 笔记二
  2. SpringBoot集成Spring Security(授权与认证)
  3. jmeter中实现java请求实战日志
  4. zabbix3.0.4-agent通过shell脚本获取mysql数据库登陆用户
  5. FineReport——获取控件值和单元格值
  6. webstrom随手笔记
  7. Jmeter安装和启动和使用
  8. PHP中嵌套函数被调用时出现报错的问题
  9. div展现与收起效果(鼠标移入移出)
  10. [Reprinted] 使用Spring Data Redis操作Redis(一) 很全面