usaco Arithmetic Progressions 暴力破解
来源:互联网 发布:c语言if语句嵌套 编辑:程序博客网 时间:2024/05/17 05:07
//枚举,hash判断,注意输出无解信息 /*{ID: lzwjava1PROG: ariprogLANG: C++}*/#include<cstdio>#include<cstring>#include<math.h>#include<stdlib.h>#include<algorithm>using namespace std;const int maxn=125000+10;bool S[maxn];int n;bool is_ok(int a,int b){for(int i=0;i<=n-1;i++)if(!S[a+i*b]) return false;return true;}int main(){ freopen("ariprog.in","r",stdin); freopen("ariprog.out","w",stdout);int i,j;int m;scanf("%d%d",&n,&m);int a,b,p,q;memset(S,false,sizeof(S));for(p=0;p<=m;p++) for(q=p;q<=m;q++) S[p*p+q*q]=true; int maxS=m*m*2; bool isNone=true; for(b=1;(n-1)*b<=maxS;b++) for(a=0;a+(n-1)*b<=maxS;a++) { if(is_ok(a,b)) { printf("%d %d\n",a,b); isNone=false; } } if(isNone) printf("NONE\n"); return 0;}/**/
一开始我的思路是:先得到b,再得到a。也即得到一个数列,对于数列的第i个数x,看是否能将其写成x=p^2+q^2。可以规定p<=q。故让p从0枚举到根号(x/2),得到q=根号(x-p^2),判断一下它是否为整数。截尾后,跟原数相比,看是否小于1e-5。
后来认为压根就不用这样,而应该:根据m,生成双平方和的集合S,记其中最大的和为maxS。则(n-1)*b<=maxS。之和从0开始枚举a,直到a+(n-1)b>maxS为止。判断。判断某数是否在集合里。hash。
- usaco Arithmetic Progressions 暴力破解
- USACO Arithmetic Progressions(暴力)
- USACO Section 1.4 - Arithmetic Progressions (暴力)
- USACO 1.4 Arithmetic Progressions (暴力搜索)
- USACO-Section1.4 Arithmetic Progressions【暴力枚举】
- USACO-Section1.4 Arithmetic Progressions[其他][暴力枚举]
- USACO 1.4-Arithmetic Progressions
- Arithmetic Progressions(usaco)
- usaco PROB Arithmetic Progressions
- usaco Arithmetic Progressions
- USACO Arithmetic Progressions
- usaco Arithmetic Progressions
- [usaco]1.4 Arithmetic Progressions
- [USACO]Arithmetic Progressions
- USACO:Arithmetic Progressions
- usaco 1.4 Arithmetic Progressions
- USACO-Arithmetic Progressions
- USACO Arithmetic Progressions
- Linux top command illustration
- linux IPC之管道
- 第十三周上机任务-项目1-fibnacct序列
- 装箱拆箱详细分析
- 注册DLL 和OCX 控件的便捷方法
- usaco Arithmetic Progressions 暴力破解
- 堆栈之说
- 给你一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给你一个字典,用户输入一个单词,让你根据字典找出这个单词有多少个兄弟单词。
- 如何在window下的linux虚拟机中上网
- C++与LInux的学习之路(一)
- android平台下提高sqlite大容量数据存储效率
- Visual Basic 2008 目录的创建与删除
- android文件存储:直接存储文件和文件存储到SDCard
- ubuntu 建立samba