The Erdös-Straus Conjecture 题解
题面
Description
The Brocard Erdös-Straus conjecture is that for any integern > 2 , there are positive integersa ≤ b ≤ c,so that :
\]
There may be multiple solutions. For example:
\]
Input
The first line of input contains a single decimal integer P, (1 ≤ p ≤ 1000), which is the number of data sets that follow. Each data set should be processed identically and independently.
Each data set consists of a single line of input. It contains the data set number,K, followed by a single space, followed by the decimal integer n,(2 ≤ n ≤ 50000)
Output
For each data set there is one line of output. The single output line consists of the data set number, K, followed by a single space followed by the decimal integer values a, b and c in that order, separated by single spaces
Sample Input
5
1 13
2 529
3 49849
4 49850
5 18
Sample Output
1 4 18 468
2 133 23460 71764140
3 12463 207089366 11696183113896622
4 12463 310640276 96497380762715900
5 5 46 2070
题解
对于这个式子
\]
不如先解除\(a\)的范围,首先\(a\)必然大于\(\frac{n}4\),因为\(b和c\)项不能为0,其次\(a\)要小于等于\(\frac{3*n}{4}\),因为要满足字典序最小,\(a\)必然最小。然后我们在这个范围枚举\(a\),计算可行的\(b和c\),不如将\(b和c\)看成一个整体,这样可以解出\(\frac{1}{b}+\frac{1}{c}\)
\]
如果解出后化简得到的分数正好分子为1,那么我们就可以直接得到\(b和c\),我们假设解出的分数为\(\frac{x}{y},x=1\),那么b和c就可以拆分为
\]
如果化简后不为1,则从小到大枚举b,找到最小的c,枚举下界从解出的分数的倒数+1开始,保证\(\frac{1}{b} < \frac{x}{y}\)到倒数的两倍结束,因为如果超过两倍的倒数b就大于c了,这时应轮换b和c使字典序最小,找出答案记录立刻退出循环即可
代码写的比较丑
AC代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll gcd(ll a, ll b) {
return a % b == 0 ? b : gcd(b, a % b);
}
int main() {
int t;
scanf("%d", &t);
while (t--) {
int k; ll n;
scanf("%d%lld", &k, &n);
ll l = n / 4 + 1;
ll r = n * 3 / 4;
ll a, b, c;
bool flag = false;
for (ll i = l; i <= r; i++) {
if (flag) break;
ll x = n * i;
ll y = 4 * i - n;
ll num = gcd(x, y);
x /= num;
y /= num;
if (y == 1) {
a = i;
b = x + 1;
c = (x + 1) * x;
flag = true;
break;
}
else {
ll s = x / y + 1;
ll t = 2 * x / y;
for (ll j = s; j <= t; j++) {
ll tmp = y * j - x;
if ((x * j) % tmp == 0) {
a = i;
b = j;
c = x * j / tmp;
flag = true;
break;
}
}
}
}
printf("%d %lld %lld %lld\n", k, a, b, c);
}
return 0;
}
最近可能都没太有空更题解了,没做的题有点多,作业还好多wwww
The Erdös-Straus Conjecture 题解的更多相关文章
- Goldbach`s Conjecture(素筛水题)题解
Goldbach`s Conjecture Goldbach's conjecture is one of the oldest unsolved problems in number theory ...
- poj 2262 Goldbach's Conjecture(素数筛选法)
http://poj.org/problem?id=2262 Goldbach's Conjecture Time Limit: 1000MS Memory Limit: 65536K Total ...
- 【LightOJ1259】Goldbach`s Conjecture(数论)
[LightOJ1259]Goldbach`s Conjecture(数论) 题面 Vjudge T组询问,每组询问是一个偶数n 验证哥德巴赫猜想 回答n=a+b 且a,b(a<=b)是质数的方 ...
- IEEEXtreme 极限编程大赛题解
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 IEEEXtreme全球极限编程挑战赛,是由IEEE主办,IEEE学生分会组织承办.IEEE会员参与指导和监督的.IEEE学生会员以团队 ...
- IEEEXtreme 10.0 - Goldbach's Second Conjecture
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Goldbach's Second Conjecture 题目来源 第10届IEEE极限编程大赛 https ...
- Poj 2662,2909 Goldbach's Conjecture (素数判定)
一.Description In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard ...
- LightOJ1259 Goldbach`s Conjecture —— 素数表
题目链接:https://vjudge.net/problem/LightOJ-1259 1259 - Goldbach`s Conjecture PDF (English) Statistic ...
- Light oj-1259 - Goldbach`s Conjecture
1259 - Goldbach`s Co ...
- [POJ2262] Goldbach’s Conjecture
Goldbach's Conjecture Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 48161 Accepted: ...
随机推荐
- webapi2返回 已拒绝为此请求授权。
开始用的webapi2中是没有问题的,后来再项目中加了个过滤器并继承了AuthorizeAttribute 然后在全球文件中注册你的过滤器,让每次执行的时候都会进来 我项目中只重写了OnAuthori ...
- Oracle,Mysql,SQlserver生成实体映射之SqlSugarT4
官网:http://www.codeisbug.com 代码已上传GitHub:https://github.com/SeaLee02/sealee 本篇主要讲使用SqlSugar包进行Model生成 ...
- MySQL表结构(含数据类型、字段备注注释)导出成Excel
方法一: 1.用的是Navicat Premium,可以换成任意图形化客户端 SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHAR ...
- 安装sass遇到的坑
一.安装Sass https://www.sass.hk/install/ 根据网站的步骤进行安装 Ruby版本的选择 我第一次下载是在Ruby官网上下的2.5.0版本得ruby.然而下载了之后无(不 ...
- navicat for MySQL连接本地数据库时报1045错误的解决方法
navicat for MySQL 连接本地数据库出现1045错误 如下图: 说明连接mysql时数据库密码错误,需要修改密码后才可解决问题: 解决步骤如下: 1.首先打开命令行:开始->运行- ...
- 表单验证(JQ)
<!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...
- Hello,移动WEB—px,dp,dpr像素基础
问题点1:iphone5分辨率:640 * 1136 dp,为什么chrome浏览器F12中显示的320 *568?? iPhone5 分辨率640 * 1136指的是物理像素,而实际 ...
- CentOS7.2中安装MongoDB
MongoDB是由C++编写的NoSQL的分布式文件数据库,用的json格式的k-value存储方式. MongoDB官网 https://www.mongodb.com 一.下载和安装 下载完后文件 ...
- SSM框架理解搭建(虽然是网上拼的,但是实际按照搭建是可以的)——
SpringSpring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象.Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地 ...
- grafana使用Prometheus数据源监控mongo数据库
数据库改用mongo后,监控需求就需要整合进grafana里,由于一直在坚持docker化部署,那么此次也不例外. 1. 安装Prometheus: What is Prometheus? Prome ...