广东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 ...
随机推荐
- STM32F103 ucLinux开发之三(内核启动后不正常)(完结)
STM32F103 ucLinux内核没有完全启动 从BOOT跳转到内核后,执行一长段的汇编语言,然后来到startkernel函数,开启C语言之旅. 但是内核输出不正常,如下所示: Linux ve ...
- 用JavaScript编写简单斗地主效果Es6
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS App占用太多磁盘空间
问题:随着App的不断运行,发现所占磁盘空间越来越大 分析:应该是网络下载中的缓存,包括利用SDWebImage产生的.和下载单个文件被取消后的缓存 验证:查看App目录中的Tmp(系统存放未下载完成 ...
- vue父子组件之间的传值
引入组件 父组件 <div> <form-edit></form-edit> </div> import FormEdit from "路径& ...
- windows10 通过命令行来查看wifi密码
c:\Windows\System32>netsh netsh>wlan show profile 接口 WLAN 上的配置文件: 组策略配置文件(只读) ---------------- ...
- macOS,安装+配置+激活:MySQL8.0 + Navicat Premium12
作者的电脑是10.13.3,些许配置偏差请自行略过 本文是学习探讨途径,请勿滥用,后果自负 MySQL8.0 篇章 官网http://www.mysql.com/downloads/ 下载即可,无需激 ...
- Scala 语法基础
一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...
- Python中读取文件输出时在头部输出\ufeff
问题出现: 在我测试python中的文本文件的读取与写入时,用到了字典对象来存储读出的数据. std_data = dict() with open(sys.argv[1], encoding='UT ...
- 从零开始的Python学习Episode 15——正则表达式
正则表达式 正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现,所以使用时要导入re模块.正则表达式模式被编译成一系列的字节码 ...
- Python学习 :常用模块(四)----- 配置文档
常用模块(四) 八.configparser 模块 官方介绍:A configuration file consists of sections, lead by a "[section]& ...