广东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 ...
随机推荐
- java的多线程和并发库
一.多线程基础知识 1.传统使用类Thread和接口Runnable实现 1)在Thread子类覆盖的run方法中编写运行代码 2)在传递给Thread对象的Runnable对象的run方法中编写代码 ...
- 什么是Spring框架? Spring框架有哪些主要的模块?
Spring框架是一个为java应用程序的开发提供了综合,广泛的基础性支持的java平台.Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发.Spring框架本身亦是 ...
- Docker permission denied
Issue: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/ ...
- RunLoop 之初探
你好2019!一起努力呀! 1.什么是runloop runloop是通过内部维护的事件循环对事件/消息进行管理的一个对象. 事件循环(Event loop):通俗的解释:没有消息处理的时候,休眠以避 ...
- Java实现目的选层电梯的调度
一.前言 本次博客我将简单介绍一下前两次的电梯作业,并简单解析一下我的程序结构,进一步对我的第二次作业的算法核心和一些想法做一些分享,我的电梯设计算法并不是由调度器来决定电梯的捎带与否,而是由电梯自主 ...
- 【js】javaScript 执行机制
javascript 是一门单线程语言(按照语句一行一行的执行) let a = '1'; console.log(a); let b = '2'; console.log(b); 这样子正常执行是没 ...
- Vue 源码分析——构造函数原型
在执行 npm run dev 的时候 根据script/config.js 文件中的配置 'web-full-dev': { entry: resolve('web/entry-runtime-wi ...
- 用file标签实现多图文件上传预览
效果图: js 代码: <script> //下面用于多图片上传预览功能 function setImagePreviews(avalue) { var docObj = document ...
- Linux C 语言之 Hello World 详解
目录 Linux C 语言之 Hello World 详解 第一个 C 语言程序 程序运行原理 编译,链接 运行时 链接库 编译器优化 Hello World 打印原理 stdout, stdin 和 ...
- Jquery 批量操作标签属性
$("[id*='Custom']").removeAttr("disabled")