138 - Street Numbers//暴力or解方程
来源:互联网 发布:帝国cms采集规则下载 编辑:程序博客网 时间:2024/06/05 16:51
先bs下自己吧。这道题可以先打表,在提交。
刚开始写的二分有点问题,我先找到的是n,然后再找m。其实是先找到m,然后再找n。
另一种解法是解方程,解佩尔方程。
不管是暴力还是解方程都要先找出表达式。由题意可得n*(n+1)/2=x*(x+1)/2-n*(n+1)+n;化简可得n*n/2=x*x+x。然后将其变形为标准的佩尔方程,然后再用递推求解。
下面是二分的代码:
#include<iostream>#include<cstdio>using namespace std;const int n=~(unsigned int)0/2;int main(){ int t=0; for(long long i=6;i<n&&t<=10;i++) { long long min=1; long long max=i+1; long long mid; while(min<=max) { mid=(min+max)/2; if(mid*mid*2==i*(i+1)) { printf("%10lld%10lld\n",mid,i); t++; break; } else if(mid*mid*2>i*(i+1)) max=mid-1; else min=mid+1; } } return 0;}结果需要3分钟左右才能求出10组解。囧.....
下面是解方程的代码:
#include<iostream>#include<cstdio>using namespace std;int main(){ int x3,y3; for(int x1=1,y1=1,x2=1,y2=1,t=0;t<10;t++) { x3=(2*x1+1)*(2*x2+1)+8*y1*y2; y3=(2*x1+1)*y2+y1*(2*x2+1); printf("%10d%10d\n",y3,(x3-1)/2); x2=(x3-1)/2; y2=y3; } return 0;}
- 138 - Street Numbers//暴力or解方程
- UVa 138 Street Numbers(数论&Pell方程)
- UVa 138 Street Numbers / 佩尔方程
- uvaoj 138 Street Numbers 佩尔方程
- poj 1320 Street Numbers(解pell方程)
- poj 1320 Street Numbers 解pell方程
- Uva 138-Street Numbers(佩尔方程)
- POJ 1320 Street Numbers [佩尔方程]
- POJ 1320 Street Numbers 解佩尔方程
- POJ1320 Street Numbers【佩尔方程】
- POJ 1320:Street Numbers 佩尔方程
- POJ1320 Street Numbers(佩尔方程)
- POJ 1320 Street Numbers 佩尔方程
- POJ 1320-Street Numbers(解佩尔方程)
- uva 138 - Street Numbers
- uva 138 street numbers
- UVA 138 Street Numbers
- UVA 138 Street Numbers
- 小谈16位汇编NEG求补指令
- Thinking in Java之匿名内部类
- 函数指针的应用(三)
- 运用C#编程通过OPC方式实现PC机与西门子PLC通讯 --异步通讯篇
- 包、访问权限、对象的组合
- 138 - Street Numbers//暴力or解方程
- 纯Java文件操作工具,支持文件、文件夹的复制、删除、移动
- 差分约束系统详解
- ubuntu上编译内核模块
- js读取屏幕长宽
- swf文件的预加载
- HBase简介(很好的梳理资料)
- iOS5.1降级到iOS5.0.1_iOS5.0.1平刷教程
- SSH中文显示乱码问题