博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[数学] Jzoj P4421 aplus
阅读量:5209 次
发布时间:2019-06-14

本文共 959 字,大约阅读时间需要 3 分钟。

Description

SillyHook要给小朋友出题了,他想,对于初学者,第一题肯定是a+b 啊,但当他出完数据后神奇地发现.in不见了,只留下了一些.out,他想还原.in,但情况实在太多了,于是他想要使得[a,b] ([a,b] 表示a,b 的最小公倍数)尽可能大。
 

Input

输入文件的第一行一个整数T 表示数据组数。
接下来T行每行一个整数n ,表示.out中的数值,即a+b=n 。

Output

共T行,每行一个整数表示最大的[a,b] 的值。
 

Sample Input

3 2 3 4

Sample Output

1 2 3
 

Data Constraint

 30%的数据满足 T<=10,n<=1000
100% 的数据满足T<=10000 ,n<=10^9

 

 

题解

  • 首先,对于如果一个数是偶数,那么很显然是相邻的两个奇数的最小公倍数绝对是最大的
  • 那么如果是偶数,可以用一半开始做,每次找到gcd(a,b)=1的就输出;不是的话,一个减一个加

代码

1 #include 
2 #include
3 using namespace std; 4 int t,n; 5 int gcd(int a, int b) { return !b?a:gcd(b,a%b); } 6 int main() 7 { 8 scanf("%d",&t); 9 while (t--)10 {11 scanf("%d",&n);12 if (n==1) scanf("0\n");13 for (int i=n/2;i;i--)14 if (gcd(i,n-i)==1)15 { 16 printf("%lld\n",1ll*i*(n-i)); 17 break; 18 }19 }20 return 0;21 }

 

转载于:https://www.cnblogs.com/Comfortable/p/9511431.html

你可能感兴趣的文章
Java 线程安全问题
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
P1-13:集成日志组件 logback 2彩色日志
查看>>
昨天开始接任务
查看>>
Linux升级内核教程(CentOS7)
查看>>
JDK5.0 特性 监控与管理虚拟机
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>
Maximum Product Subarray
查看>>
shell 默认变量
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>
解决DataSnap支持的Tcp长连接数受限的两种方法
查看>>
Synchronous/Asynchronous:任务的同步异步,以及asynchronous callback异步回调
查看>>
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
如何选择适合自己的云管理平台(一)
查看>>