洛谷题解:P8778 [蓝桥杯 2022 省 A] 数的拆分
1|0思路
这道题看似需要枚举 x 的因子,其实 x 在分解后会变成这个样子 p12 * p23 因为 ∀y≥2, , xy 其中 y 一定可以拆分成 2 * a + 3 * b 于是这道题就很好解了,只需要暴力判断 4000 以内的素因子,对于大于 4000 的 p ,指数只可能是 2,3,4 ,即判断一下是否为平方数或者立方数即可。
本题还要注意细节,我算了一下时间复杂度 5.5 * 107 还能跑,只是怕卡常最好加上快读。
点击查看代码
//#pragma GCC optimize(2)
//#pragma GCC optimize(3,“Ofast”,“inline”) #include <bits/stdc++.h> #define foR for #define intt register int #define zs(x) isdigit(x) #define ll long long #define amax max_element #define genshin() puts("genshi over") #define debug() puts("I AK IOI") #define re return #define rep(i,l,j,k) for(register int i=l;i<=j;i+=k) #define int long long using namespace std; const int N = 1e6 + 10; int T,n; int check(int x) { int sq = (int)pow(x,1.0/2); int qs = (int)pow(x,1.0/3); if(sq*sq==x) return 2; sq++;if(sq*sq==x) return 2; if(qs*qs*qs==x) return 3; qs++; if(qs*qs*qs==x) return 3; qs++; if(qs*qs*qs==x) return 3; qs++; return 0; } // 检查平方和立方数 inline int read() { char c = getchar();int x = 0; while(!isdigit(c)) c=getchar(); while(isdigit(c)) x=(x<<1)+(x<<3)+c-'0',c=getchar(); return x; } inline void write(int x) { char c = x % 10 - '0'; putchar(c); if(x>9) write(x/10); } int vis[N],prime[N],tot; void init(int n) { for(intt i=2;i<=n;++i) { if(vis[i]) continue; prime[++tot] = i; for(int j=i*2;j<=n;j+=i) vis[j] = 1; } } signed main() { ios::sync_with_stdio(0); ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); T=read(); init(4000); /*先预处理 4000 以内的指数*/ bool fl = 1; while(T--) { n = read(); if(check(n)) { puts("yes"); continue; /*考虑和一搭配的情况*/ } fl = 1; for(intt i=1;i<=tot;++i) { int now = 0; while(n%prime[i]==0) n /= prime[i],now++; if(now==1) {fl = 0;break;} } if(fl && check(n)) puts("yes"); else puts("no"); } return 0; }
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
__EOF__

本文作者:虽不能至,心向往之
本文链接:https://www.cnblogs.com/FChang/p/18117598.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/FChang/p/18117598.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:FChang,转载请注明原文链接:https://www.cnblogs.com/FChang/p/18117598
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现