Luogu P11036 GCD 与 LCM 问题 [ 绿 ] [ 构造 ] [ 数论 ] [ adhoc ]
Luogu P11036 GCD 与 LCM 问题:梦熊的题真是又神又逆天。
思路
观察到有个奇数的特殊性质,我们尝试从奇数构造入手。
先来尝试带入极端数据,对于 \(\gcd\),我们可以把 \(b=1\) 的情况先带进去看看。
\]
\]
\]
奇数情况
我们尝试在 \(a\) 为奇数的情况解这个方程。
首先我们依然是进行极端构造,先把 \(c=1\) 带入,可得:
\]
发现 \(d\) 被消去,我们无法求出 \(d\),所以我们要让 \(d\) 的系数加倍,以防止被抵消。
于是我们尝试把 \(c=2\) 带入,并且强制让 \(d\) 变成奇数,这样才能让这个 \(2\) 起效果。
\]
\]
其中,\(a,d\) 皆为奇数,所以成立。
所以:
\]
场上我只想得出这个奇数构造了,偶数的没有想出来。现在看来我就是个傻逼。
偶数情况
我们发现奇数情况是不适用偶数情况的,所以要另辟蹊径。
于是我们要想办法让偶数情况变成奇数情况。
怎么变?
尝试把 \(a\) 中所有的 \(2\) 提出来,\(a\) 就变成奇数了!
这时:
\]
其中 \(p\) 为奇数。
所以我们可以对 \(p\) 的情况进行构造,然后将 \(c,d\) 同时乘上 \(2^k\) 输出就好了。
为什么不会超过限制?因为 \(d\) 最多才 \(a+2\),也就是说他最多比 \(a\) 要大 \(2^30\),极端情况下也只有 \(2^{30}+2^{29}=1610612736\),刚好卡过!
注意 \(b\) 不用扩倍,因为他立刻就能被消去。
总结
这题其实重点在于考虑从特殊性质入手,然后进行极端构造,最后尝试把难以解决的情况化为之前我们以及解决了的问题。是一道很好的构造练习题。
代码
#include <bits/stdc++.h>
#define fi first
#define se second
#define lc (p<<1)
#define rc ((p<<1)|1)
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
int t;
ll a,b,c,tms;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>t;
while(t--)
{
cin>>a;
tms=1;
while(a%2==0)
{
a/=2;
tms*=2;
}
cout<<1<<' '<<2*tms<<' '<<(a+2)*tms<<endl;
}
return 0;
}
Luogu P11036 GCD 与 LCM 问题 [ 绿 ] [ 构造 ] [ 数论 ] [ adhoc ]的更多相关文章
- HDOJ 4497 GCD and LCM
组合数学 GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- hdu 4497 GCD and LCM 数学
GCD and LCM Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4 ...
- GCD 与 LCM UVA - 11388
题目链接: https://cn.vjudge.net/problem/23709/origin 本题其实有坑 数据大小太大, 2的32次方,故而一定是取巧的算法,暴力不可能过的 思路是最大公因数的倍 ...
- 简单数论总结1——gcd与lcm
并不重要的前言 最近学习了一些数论知识,但是自己都不懂自己到底学了些什么qwq,在这里把知识一并总结起来. 也不是很难的gcd和lcm 显而易见的结论: 为什么呢? 根据唯一分解定理: a和b都可被分 ...
- poj 2429 GCD & LCM Inverse 【java】+【数学】
GCD & LCM Inverse Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9928 Accepted: ...
- HDU 4497 GCD and LCM (合数分解)
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- hdu4497 GCD and LCM
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total S ...
- HDU 4497 GCD and LCM(数论+容斥原理)
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- 数论——算数基本定理 - HDU 4497 GCD and LCM
GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- HDU4497——GCD and LCM
这个题目挺不错的,看到是通化邀请赛的题目,是一个很综合的数论题目. 是这样的,给你三个数的GCD和LCM,现在要你求出这三个数有多少种可能的情况. 对于是否存在这个问题,直接看 LCM%GCD是否为0 ...
随机推荐
- .NET周刊【11月第4期 2024-11-24】
国内文章 C# 入门深度学习:万字长文讲解微积分和梯度下降 https://www.cnblogs.com/whuanle/p/18551532 这篇文章主要介绍了使用 C# 进行深度学习的方法,特别 ...
- 移动端NES网页模拟器(1)
前言 移动端浏览器是没有实体键盘的,想要操作游戏就必须为其设置虚拟按键,通过虚拟按键(按钮)的标识与实体键盘的keyCode进行绑定,来达到想要的效果. 这个随笔只封装NES游戏手柄右边的按键,不包含 ...
- WPS Pro 最新专业版,一站式办公
聊一聊 随着科技的进步,办公软件已经成为现代人工作和学习中不可或缺的重要工具.无论是在企业.学校还是个人使用中,办公软件都能够帮助我们提高工作效率.组织信息和进行沟通.在众多的办公套件中,微软的Off ...
- WinForm 通用权限框架,简单实用支持二次开发
前言 开发一个安全.灵活且易于维护的应用程序是至关重要的.特别是在企业级应用中,权限管理不仅涉及到用户访问控制,还关系到数据的安全性和系统的稳定性. 推荐一款 WinForm 通用.完整的权限架构开发 ...
- 【前端】【JavaScript】简单的加减乘除计算器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Nginx+ModSecurity(WAF) 加强 Web 应用程序安全性
Nginx 和 ModSecurity 加强 Web 应用程序的安全性 在当今互联网时代,Web 应用程序的安全性变得尤为重要.为了保护应用程序和用户的数据免受恶意攻击和漏洞利用,使用合适的工具和技术 ...
- 第1章04节 | 常见开源OLAP技术架构对比
https://zhuanlan.zhihu.com/p/266402829 1. 什么是OLAP OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库 ...
- Python爬虫requests判断请求超时并重新post/get发送请求
Python爬虫requests判断请求超时并重新post/get发送请求在使用Python爬虫中,你可以使用requests库来发送网络请求.为了判断请求超时并重新发送请求,你可以设置一个超时时间, ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v9.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- SpringCloud (五) - 云服务器Centos7.6,安装JDK,Maven,Mysql,Redis
1.购买云服务器 购买地址:https://cloud.tencent.com/act/pro/2022double11_warmup 后面的环境都是基于此环境Centos7.6: 2.安装 Secu ...