本题纯属水题,一看5s的时限就直接暴力。1Y!
/* ID: like_091 PROG: ariprog LANG: C++ */ #include<iostream> #include<cmath> #include<fstream> using namespace std; const int MAX = 250; int d[MAX * MAX * 2 + 1], tem; struct Node{ int x, y; }node[10001]; int cmp(const void *a, const void *b) { Node *c = (Node *)a; Node *d = (Node *)b; if (c->y == d->y) return c->x - d->x; return c->y - d->y; } void fun(int m) { for (int i = 0; i <= m; i++) for (int j = 0; j <= m; j++) d[i * i + j * j] = 1; } void enqueue(int a, int b) { node[tem].x = a; node[tem++].y = b; } int main() { ifstream cin("ariprog.in"); ofstream cout("ariprog.out"); int m, n, len; cin>>n>>m; len = (int)sqrt(m * m * 2.0); for (int i = 0; i <= m * m * 2; i++) d[i] = 0; fun(m); tem = 0; for (int i = 0; i <= m * m * 2; i++) if (d[i]) { bool flag = true; for (int j = 1; j <= (m * m * 2 - i) / (n - 1); j++) { bool flag = true; for (int k = 1; k < n; k++) if (!d[k * j + i]) { flag = false; break; } if (flag) enqueue(i, j); } } qsort(node, tem, sizeof(node[0]), cmp); if (!tem)cout<<"NONE"<<endl; for (int i = 0; i < tem; i++) cout<<node[i].x<<" "<<node[i].y<<endl; return 0; }
原文链接: https://www.cnblogs.com/neulike/archive/2011/02/23/1963282.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/21417
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!