CF1875C Jellyfish and Green Apple 题解
CF1875C Jellyfish and Green Apple
我们首先把整块的分完,然后处理剩余的分数块数。
由于我们只能劈成两半,所以约分之后分数的分母只能为 的幂,不能包含其他质因数。如果包含,直接输出 -1
。
我们每次把剩下的块全部劈成两半,统计刀数,直到块数足够分给 个人。分给那些人后,让块数减去 ,在重复这个过程,直到最后只剩 块。
#include <bits/stdc++.h>
using namespace std;
long long t,n,m;
long long gcd(long long x,long long y)
{
if(y==0)return x;
else return gcd(y,x%y);
}
int main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld%lld",&n,&m);
long long num=n%m,ans=0,c=m,d=n%m,k=gcd(c,d);
c/=k;
while(c%2==0)c/=2;
if(c>1&&n%m!=0)
{
printf("-1\n");
continue;
}
while(num!=0)
{
while(num<m)ans+=num,num*=2;
num-=m;
}
printf("%lld\n",ans);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探