2021-10-19训练赛B题题解

给定整数n,找到正整数a和b,使得a+b=n且LCM(a,b)最小。通过数学分析,可以使用n的平方根范围进行搜索,找到能被n整除的数i,然后输出n/i和n-n/i作为答案。" 120390590,9558129,深度解析:从Attention到Transformer再到BERT,"['自然语言处理', '机器学习', 'BERT']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题为:CodeForces 1372B - Omkar and Last Class of Math。

B. Omkar and Last Class of Math
time limit per test 1 second
memory limit per test 256 megabytes
input standard input
output standard output
In Omkar’s last class of math, he learned about the least common multiple, or LCM. LCM(a,b) is the smallest positive integer x which is divisible by both a and b.

Omkar, having a laudably curious mind, immediately thought of a problem involving the LCM operation: given an integer n, find positive integers a and b such that a+b=n and LCM(a,b) is the minimum value possible.

Can you help Omkar solve his ludicrously challenging math problem?

Input
Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤10). Description of the test cases follows.

Each test case consists of a single integer n (2≤n≤109).

Output
For each test case, output two positive integers a and b, such that a+b=n and LCM(a,b) is the minimum possible.

Example input
3
4
6
9

output
2 2
3 3
3 6

Note
For the first test case, the numbers we can choose are 1,3 or 2,2. LCM(1,3)=3 and LCM(2,2)=2, so we output 2 2.

For the second test case, the numbers we can choose are 1,5, 2,4, or 3,3. LCM(1,5)=5, LCM(2,4)=4, and LCM(3,3)=3, so we output 3 3.

For the third test case, LCM(3,6)=6. It can be shown that there are no other pairs of numbers which sum to 9 that have a lower LCM.

题目大意:
输入一个t表示有t组数据,对于每组数据输入一个n,求a+b==n且 lcm(a,b)尽可能的小。


题解:该题要求我们在满足a+b=n的情况下lcm(a,b)要尽可能的小。一开始我想的是直接用朴素的暴力算法与(a+b)/(最大公约数)进行求解,但不幸TLE了。所以我转为运用对n的范围进行开方进行减小循环范围(不朴素的暴力算法),然后利用求素数的思想,开始从2进行寻找可以对n取模为0的值,如果有该数则证明有可以n分成两个数,从而lcm达到最小值,然后输出n/i与n-n/i(a+b=n),如果遍历完无该值则只能输出1和n-1。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,temp=1;
		scanf("%d",&n);
		int m=sqrt(n)+1;
		int lin1,lin2;
        for(int i=2;i<=m;i++)
        {
        	lin1=n/i;
	        lin2=n-lin1;
        	if(n%i==0)
	          {
	            printf("%d %d\n",lin1,lin2);
	            temp=0;
	            break;
          	  }
        }
        if(temp)
        {
        	lin1=1;
        	lin2=n-1;
        	printf("%d %d\n",lin1,lin2);
        }
	}
	return 0;
}

### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况时,可以从以下几个方面排查并解决问: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可证服务器的成功初始化。 #### 4. **权限问** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为或完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值