Lightoj-1220
https://vjudge.net/problem/LightOJ-1220
求x=bp中最大的p,x可能为负数。
因数分解,x=p1x1*p2x2*...*pnxn
x=(p1x1'*p2x2'*...*pnxn')q
如果x是正数的话,那么这个q最大就是gcd(x1,x2...xn),也就是答案了。
如果x是负数,那么q显然应该是个奇数,让求得的q不断/2直至为奇数即可。
题目明明说了x的范围在32为之内搞不懂为什么开LL才能过c。
1 #include<iostream> 2 #include<cstring> 3 #include<queue> 4 #include<cstdio> 5 #include<stack> 6 #include<set> 7 #include<map> 8 #include<cmath> 9 #include<ctime> 10 #include<time.h> 11 #include<algorithm> 12 using namespace std; 13 #define mp make_pair 14 #define pb push_back 15 #define debug puts("debug") 16 #define LL long long 17 #define pii pair<int,int> 18 #define eps 1e-12 19 20 int gcd(int a,int b){ 21 return b==0?a:gcd(b,a%b); 22 } 23 24 int main() 25 { 26 int n,m,i,j,k,t; 27 int cas=0; 28 cin>>t; 29 while(t--){ 30 int p=0; 31 LL x; 32 bool fs=0; 33 scanf("%lld",&x); 34 if(x<0) x=-x,fs=1; 35 int m=sqrt(x); 36 for(i=2;i<=m;++i){ 37 if(x%i==0){ 38 int tmp=0; 39 while(x%i==0){ 40 tmp++; 41 x/=i; 42 } 43 p=gcd(p,tmp); 44 } 45 } 46 if(!p) p++; 47 if(fs) { 48 while(p%2==0) p/=2; 49 } 50 printf("Case %d: %d\n",++cas,p); 51 } 52 return 0; 53 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· DeepSeek V3 两周使用总结
· 回顾我的软件开发经历(1)
· C#使用yield关键字提升迭代性能与效率
· 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解
· 4. 使用sql查询excel内容
2017-04-30 HDU1789时间贪心
2017-04-30 HDU2159二维背包