[JZOJ4900]完全平方数
来源:互联网 发布:答题软件哪个好 编辑:程序博客网 时间:2024/05/16 00:50
题目大意
给定
答案对
题目分析
这题的Trick不错,考场上我居然弱弱地没有想出来QwQ
显然出了贪心这种题目不可做了~
我们先把
一个数是完全平方数当且仅当它的所有质因子的幂数都是偶数。
那么我们考虑一个质因子,如果它在
我们线筛一下,分解质因数就好了。虽然带个
代码实现
#include <iostream>#include <cstdio>using namespace std;const int N=5000000;const int P=100000007;int f[N+50],pri[N+50];bool cnt[N+50];int n,ans;int quick_power(int x,int y){ int ret=1; for (;y;y>>=1,x=1ll*x*x%P) if (y&1) ret=1ll*ret*x%P; return ret;}void pre(){ f[1]=1; for (int i=2;i<=n;i++) { if (!f[i]) f[i]=i,pri[++pri[0]]=i; for (int j=1;j<=pri[0];j++) { if (1ll*pri[j]*i>n) break; f[pri[j]*i]=pri[j]; if (!(i%pri[j])) break; } }}void calc(){ ans=1; for (int i=1,x;i<=n;i++) { ans=1ll*ans*i%P; for (x=i;x!=1;x/=f[x]) cnt[f[x]]^=1; } for (int i=1;i<=n;i++) if (cnt[i]) ans=1ll*ans*quick_power(i,P-2)%P;}int main(){ freopen("number.in","r",stdin),freopen("number.out","w",stdout); scanf("%d",&n); pre(),calc(); printf("%d\n",ans); fclose(stdin),fclose(stdout); return 0;}
0 0
- [JZOJ4900]完全平方数
- 【jzoj4900】【完全平方数】【数论】
- Jzoj4900 平方数
- 关于完全平方数
- 完全平方数
- 完全平方数
- 完全平方数
- 完全平方数问题
- 完全平方数
- 【BZOJ2440】完全平方数
- 完全平方数
- 生物芯片 完全平方数
- 完全平方数
- 完全平方数
- 完全平方数
- bzoj2440 完全平方数
- 检验完全平方数
- 打印完全平方数
- 10 JavaScript基础之--函数名、函数体和函数加载问题
- 如何写软件设计文档[转]
- offest与layout的区别
- Tinyhttpd for Windows
- spring烂设计之DefaultSubscriptionRegistry DestinationCache
- [JZOJ4900]完全平方数
- 欢迎使用CSDN-markdown编辑器
- 教你怎么利用Matlab画散点图
- pygame中背景音乐的相关函数
- 数据库索引
- RHEL7系统修复
- Linux基本命令
- OpenCV—基本数据结构与示例
- thinkphp模板跳转问题