Arithmetic Progressions

本题纯属水题,一看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】免费获取数百本计算机经典书籍

    Arithmetic Progressions

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/21417

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午11:25
下一篇 2023年2月7日 下午11:25

相关推荐