广东ACM省赛 E题
题意: 输入一个P 使得存在一个一个N大于等于P, 并且存在m 等于 m/n * (m-1)/(n-1)=1/2.
思路
此题可以利用佩尔方程求解, 也可以打表解决.本次我解决利用的是佩尔方程(其实也是打表).
将方程化解成 8mm-8m=4n*n-4n 等于 (2n-1)²-2(2m-1)²=-1 设 a=2n-1; b=2m-1 方程等于 a²-2b²=-1; 已知n,m的最小解是4和3.所以 a和b的最小解为7和5.
我们取一个方程 为 x²-2y²=1 两方程相乘得到 (a²-2b²)(x²-2y²)=-1 化解得:(ax+2by)²-2(bx+ay)²=-1; 所以 a=ax+2by,b=bx+ay.也是方程a²-2b²=-1的一个解;
取x 和y的最小值为 x=3,y=2 所以 a1=3a0+4b0, b1=3b0+2a0; 第一项a0=7,b0=5 所以 a1=21+20=41 对应的x等于21 b1=15+14=29 对应的Y等于15.
所以它的规律就是
第一项 n=4,m=3.
n1=3n0+4m0-3.
m1=3m0+2n0-2.
存表二分搜就好了
备注: 我这个代码可能有bug,没平台交随便写写,暴力打表能过的. 这题主要提供个思路
java code:
import java.math.;
import java.util.;
import java.io.*;
public class Main {
static final int MAXN=128;
static BigInteger[] x=new BigInteger[MAXN];
static BigInteger[] y=new BigInteger[MAXN];
static BigInteger BB,CC;
static void Init()
{
x[0]=BigInteger.valueOf(7);
y[0]=BigInteger.valueOf(5);
for(int i=1;i<MAXN;i++)
{
x[i]=x[i-1].multiply(BigInteger.valueOf(3)).add(y[i-1].multiply(BigInteger.valueOf(4)));
y[i]=x[i-1].multiply(BigInteger.valueOf(2)).add(y[i-1].multiply(BigInteger.valueOf(3)));
}
}
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
BigInteger N;
Init();
N=in.nextBigInteger();
for(int i=0;i<MAXN;i++)
{
if(N.compareTo(x[i])!=1&&((x[i].mod(BigInteger.valueOf(2))).equals(BigInteger.valueOf(1)))&&((y[i].mod(BigInteger.valueOf(2))).equals(BigInteger.valueOf(1))))
{
BB=x[i].add(BigInteger.valueOf(1));
BB=BB.divide(BigInteger.valueOf(2));
CC=y[i].add(BigInteger.valueOf(1));
CC=CC.divide(BigInteger.valueOf(2));
System.out.println(BB+" "+CC);
break;
}}
}
}
广东ACM省赛 E题的更多相关文章
- 第十届山东省acm省赛补题(1)
今天第一场个人训练赛的题目有点恐怖啊,我看了半个小时多硬是一道都不会写.我干脆就直接补题去了.... 先补的都是简单题,难题等我这周末慢慢来吧... A Calandar Time Limit: 1 ...
- Sdut 2409 The Best Seat in ACM Contest(山东省第三届ACM省赛 H 题)(模拟)
题目描述 Cainiao is a university student who loves ACM contest very much. It is a festival for him once ...
- Rectangles(第七届ACM省赛原题+最长上升子序列)
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1255 描述 Given N (4 <= N <= 100) rec ...
- 青岛理工ACM交流赛 J题 数格子算面积
数格子算面积 Time Limit: 1000MS Memory limit: 262144K 题目描述 给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积. 输入 第一行两个正整数h ...
- 哈尔滨工程大学ACM预热赛 补题
链接:https://ac.nowcoder.com/acm/contest/554/A来源:牛客网 小虎刚刚上了幼儿园,老师让他做一个家庭作业:首先画3个格子,第二行有2个格子,第三行有1个格子. ...
- 第十届山东省acm省赛补题(2)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124 L Median Time Limit: 1 Second ...
- Sdut 2416 Fruit Ninja II(山东省第三届ACM省赛 J 题)(解析几何)
Time Limit: 5000MS Memory limit: 65536K 题目描述 Haveyou ever played a popular game named "Fruit Ni ...
- 哈尔滨工程大学ACM预热赛 G题 A hard problem(数位dp)
链接:https://ac.nowcoder.com/acm/contest/554/G Now we have a function f(x): int f ( int x ) { if ( ...
- 第八届山东ACM省赛F题-quadratic equation
这个题困扰了我长达1年多,终于在今天下午用两个小时理清楚啦 要注意的有以下几点: 1.a=b=c=0时 因为x有无穷种答案,所以不对 2.注意精度问题 3.b^2-4ac<0时也算对 Probl ...
随机推荐
- C#中参数传递
当调用带有参数的方法,需要向方法传递参数,有三种向方法传递参数的方式. 1.值参数:这种方式复制参数的实际值给形式参数,形参和实参使用的是内存中两个不相同的值,形参发生改变不会影响实参的值,从而保证了 ...
- ActionBar自己定义改动无效解决方法
假设程序支持API11下面的版本号,那么须要改动多个地方 values-v14 和values-v11以下的styles中也要写上 <style name="AppTheme" ...
- Ubuntu16.04系统中不同版本Python之间的转换
Ubuntu系统自带的版本是2.7.12 安装好python3.6之后,改变一下Python的优先级(需要root权限). 在使用下面这个命令查看电脑里面有几个Python版本 update-alte ...
- package-lock.json 作用
package.json里面定义的是版本范围(比如^1.0.0),具体跑npm install的时候安的什么版本,要解析后才能决定,这里面定义的依赖关系树,可以称之为逻辑树(logical tree) ...
- Ext JS 6和Sencha CMD 6 快速入门
Ext JS 6和Sencha CMD 6的入门很简单.一个命令,即可生成一个功能完整的“通用”应用程序,可以运行在本地服务器上. 这个“通用”的应用程序包含一组核心的stores,模型(models ...
- SQL分页过多时, 如何优化
问题: 我们经常会使用到分页操作,这里有个问题,在偏移量非常大的时候,它会导致MySQL扫描大量不需要的行然后再抛弃掉.如: , ; 上述这条SQL语句需要查询10020条记录然后只返回最后20条.前 ...
- 推荐一个网址:在线检查Yam文件语法格式的错误
最近在学习Docker和K8S内容时候,经常会遇到要自己写一些容器部署或者组件部署的yaml文件. 但是苦于没有彻底熟悉yaml,有时候要到kubectl creat -f path 部署命令执行后, ...
- Centos7前后台运行jar包
方式一: java -jar lf-test-1.0-SNAPSHOT.jar 前台运行,当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出. 方式二: java -ja ...
- php之微型博客的创建
一,微型博客的开发思路 微型博客的创建,确定无疑我们会用到PHP和mysql之间的增添删改查,首先来看一下思维导图: 搭建好计算机里的apache php 和mysql的联动功能,打开phpmyadm ...
- window7下 cmd命令行 Mysql导出表结构 + 表数据
命令格式 mysqldump -uroot -p 密码 库名 > 自定义路径/库名.sql