bzoj1406【数论】
来源:互联网 发布:南光坊天海 知乎 编辑:程序博客网 时间:2024/05/19 04:06
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;typedef long long LL;inline int read(){int x=0;bool f=0;char c=getchar();for (;c<'0'||c>'9';c=getchar()) f=c=='-'?1:0;for (;c>='0'&&c<='9';c=getchar()) x=x*10+c-'0';return f?-x:x;}LL n,ans[10010],val[50],k[50];int num[50],np[50],pow[50],m=0,cnt=0;inline LL qpower(LL a,LL k,LL mod){LL rec=1;while (k){if (k&1) rec=rec*a%mod;a=a*a%mod;k>>=1;}return rec;}void split(){LL nn=n;for (LL i=2;i*i<=n;i++) if (n%i==0){num[++m]=i;np[m]=i;pow[m]=1;n/=i;while (n%i==0) n/=i,np[m]*=i,pow[m]++;}if (n>1) num[++m]=n,np[m]=n,pow[m]=1;n=nn;for (int i=1;i<=m;i++){LL ki=n/np[i];k[i]=ki*qpower(ki,np[i]-np[i]/num[i]-1,np[i])%n;}}void dfs(int d){if (d<=m){if (num[d]==2){if (pow[d]==1) val[d]=1,dfs(d+1);else if (pow[d]==2) val[d]=1,dfs(d+1),val[d]=3,dfs(d+1);else val[d]=1,dfs(d+1), val[d]=(np[d]>>1)-1,dfs(d+1), val[d]=(np[d]>>1)+1,dfs(d+1), val[d]=np[d]-1,dfs(d+1);}else val[d]=1,dfs(d+1),val[d]=np[d]-1,dfs(d+1);}else{LL rec=0;for (int i=1;i<=m;i++)rec=(rec+k[i]*val[i])%n;ans[++cnt]=rec;}}int main(){n=read();if (n==1) return puts("1"),0;split();dfs(1);sort(ans+1,ans+cnt+1);for (int i=1;i<=cnt;i++) printf("%lld\n",ans[i]);return 0;}
0 0
- bzoj1406【数论】
- 【bzoj1406】【AHOI2007】【密码箱】【数论】
- 【bzoj1406】 AHOI2007密码箱 数论
- [bzoj1406][数论]密码箱
- 【BZOJ1406】【codevs2478】密码箱,数论练习
- BZOJ1406 密码箱
- [BZOJ1406][AHOI2007]密码箱
- [bzoj1406]密码箱 解题报告
- BZOJ1406 [AHOI2007]密码箱
- bzoj1406: [AHOI2007]密码箱
- [BZOJ1406][AHOI2007]密码箱(数学相关)
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- Java集合系列(1)--总体框架
- 微信支付相关流程(总结下最近做微信支付时需要注意的部分)
- Fragment在remove的时候崩溃,报IllegalStateException: Can not perform this action after onSavaInstanc异常
- Ubuntu 14.04挂载NTFS硬盘
- java类
- bzoj1406【数论】
- UVA 12166 Equilibrium Mobile (天平性质 + DFS)
- HTTP基本知识
- JavaScript停止冒泡和阻止浏览器默认行为
- Codeforces 763B-Timofey and rectangles (思维,四色定理)
- atitit 项目注册功能算法attilax总结.docx
- gdufe acm 1363 校庆嘉宾
- 团体程序设计天梯赛-练习集-L3-011. 直捣黄龙(最短路+计数)
- 3.Web Service 使用CXF开发客户端