CF1656D K-good Solution
做法
奇偶性判定好题。
为奇数
很显然,
为偶数
设
那么考虑拆分
因为
所以
所以我们把
设
代码
#include<bits/stdc++.h>
using namespace std;
int T;
long long n;
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
if(n%2==1)//n为奇数时直接特判
{
printf("2\n");
continue;
}
else//n为偶数
{
long long a=1,b=0,x=2*n;
while(x%2==0)
{
x/=2;a*=2;//将2*n这个数拆分成奇数乘偶数的形式
}
b=(2*n)/a;
if(min(a,b)<2)printf("-1\n");//a、b的最小值小于2,无解
else if(a<b)printf("%lld\n",a);//输出较小的一个数
else if(a>b)printf("%lld\n",b);
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App