广中路街道网站建设,百度推广网页版,pc网站如何做移动网站,化妆品网站后台正题
题目链接:https://atcoder.jp/contests/agc027/tasks/agc027_d 题目大意 n∗nn*nn∗n的网格#xff0c;每个格子填一个数要求
所有数各不相同对于相邻的两个数ax,aya_x,a_yax,ay#xff0c;max{ax,ay}%min{ax,ay}max\{a_x,a_y\}\%min\{a_x,a_y\}max{ax,ay}%mi…正题
题目链接:https://atcoder.jp/contests/agc027/tasks/agc027_d 题目大意
n∗nn*nn∗n的网格每个格子填一个数要求
所有数各不相同对于相邻的两个数ax,aya_x,a_yax,aymax{ax,ay}%min{ax,ay}max\{a_x,a_y\}\%min\{a_x,a_y\}max{ax,ay}%min{ax,ay}相同数的大小不超过101510^{15}1015 解题思路
我们对与每一个斜角线都定义一个不相同的质数然后在两个斜对角的位置就是两个质数的乘积。
对与剩下的格子填四周数的lcm1lcm1lcm1即可。 codecodecode
#includecstdio
#includecstring
#includealgorithm
#define ll long long
using namespace std;
ll n,pri[110000],cnt,a[510][510];
bool v[110000];
ll lcm(ll x,ll y){if(!x||!y)return xy;return x/__gcd(x,y)*y;
}
int main()
{scanf(%lld,n);if(n2)return printf(4 7\n23 10)0;for(ll i2;i10000;i){if(!v[i])pri[cnt]i;for(ll j1;jcnti*pri[j]10000;j){v[i*pri[j]]1;if(i%pri[j]0)break;}}for(ll i1;in;i)for(ll j1;jn;j)if(!((ij)1))a[i][j]pri[(ij)/2]*pri[n(n1)/2(i-j)/2];for(ll i1;in;i)for(ll j1;jn;j)if((ij)1)a[i][j]lcm(lcm(a[i-1][j],a[i1][j]),lcm(a[i][j1],a[i][j-1]))1ll;for(ll i1;in;i,putchar(\n))for(ll j1;jn;j)printf(%lld ,a[i][j]);
}