USCAO-Section 1.4 Arithmetic Progressions
来源:互联网 发布:闺知密使用方法 编辑:程序博客网 时间:2024/06/13 09:50
原题:
An arithmetic progression is a sequence of the form a, a+b, a+2b, …, a+nb where n=0,1,2,3,… . For this problem, a is a non-negative integer and b is a positive integer.
Write a program that finds all arithmetic progressions of length n in the set S of bisquares. The set of bisquares is defined as the set of all integers of the form p2 + q2 (where p and q are non-negative integers).
题意:
求由0<=p,q<=M生成的(p^2+q^2)的集合中长度为N的等差数列a+bn的a和b并按照b优先,b相等按a排序的要求按顺序输出。
输入M,N,N是数列长度要求,M是pq的上限,用小于等于M的p和q生成集合。M小鱼250.
水题,直接上代码:
/*ID:newyear111PROG: ariprogLANG: C++*/#include <iostream>#include <fstream>#include <string>#include<algorithm>using namespace std;const int N=150000;//node用来记录等差数列的first_number和公差 struct Node{ int a,b;}node[N];int pq[N];//pq[i]=1代表 i是双平方集合中存在的值 int T[N];//将上面的双平方数存入其中 int n,m;int lenAns,lenpq; //根据题目要求对结果进行排序 bool cmp(Node x,Node y){ return (x.b<y.b)||(x.b==y.b&&x.a<y.a);} //生成从小到大排序好的双平方数集合 void init(){ for(int i=0;i<=m;i++){ for(int j=i;j<=m;j++) pq[i*i+j*j]=1; } for(int i=0;i<N;i++){ if(pq[i]) T[lenpq++]=i; }}int main(){ ifstream fin("ariprog.in"); ofstream fout("ariprog.out");// 计算出双平方数最大为多少 cout<<250*250*2<<endl; 125000在数组的可接受范围内,我们可以用数组的index进行标记 fin>>n>>m; init();//生成集合 //遍历集合中的所有数 找出满足条件的等差数列 for(int i=0;i<lenpq;i++){ for(int j=i+1;j<lenpq;j++){ int b=T[j]-T[i]; int a=T[i]; int k; for(k=2;k<n;k++){ if(!pq[a+b*k]) break; } //记录满足条件是等差数列的头和公差 if(k==n){ node[lenAns].a=a; node[lenAns].b=b; lenAns++; } } } sort(node,node+lenAns,cmp); if(!lenAns){ fout<<"NONE"<<endl; } else{ for(int i=0;i<lenAns;i++){ fout<<node[i].a<<" "<<node[i].b<<endl; } } fin.close(); fout.close(); return 0;}
阅读全文
0 0
- USCAO-Section 1.4 Arithmetic Progressions
- USCAO section 1.4 Arithmetic Progressions(枚举)
- Section 1.4 Arithmetic Progressions
- USACO Section 1.4 Arithmetic Progressions
- USACO-Section 1.4 Arithmetic Progressions
- USACO Section 1.4 Arithmetic Progressions
- USACO section 1.4.3 Arithmetic Progressions
- USACO Section 1.4 Arithmetic Progressions (ariprog)
- USACO Section 1.4 - Arithmetic Progressions (暴力)
- USACO-Section 1.4 Arithmetic Progressions(枚举)
- USACO 1.4-Arithmetic Progressions
- 1.4.3 Arithmetic Progressions
- [usaco]1.4 Arithmetic Progressions
- usaco 1.4 Arithmetic Progressions
- 1.4.3---Arithmetic Progressions
- USACO 1.4 Arithmetic Progressions
- USACO 1.4 Arithmetic Progressions
- USACO 1.4-Arithmetic Progressions
- 北京信息科技大学校赛(全部题解)
- Git的使用
- VPS服务器搭建及ss配置
- 术语:何为对象
- psftp的用法(超级详细)
- USCAO-Section 1.4 Arithmetic Progressions
- hdoj 1019Least Common Multiple
- hdu 3487 Play with Chain splay 区间翻转,插入,删除
- BZOJ[4896] Trie
- 【LeetCode】217.Contains Duplicate解题报告
- Android进程间通信-AIDL
- 215. Kth Largest Element in an Array
- 计算器实现
- SpringMVC 入门项目,非注解