【jzoj4264】【tty妹子的函数】
来源:互联网 发布:卖家开通淘宝客的条件 编辑:程序博客网 时间:2024/05/01 17:26
题目大意
对于给定的函数,求这个函数将会经过多少个整点。
解题思路
观察可知,Ans=∑NX=1(X(X−A)==0(%M))=∑NX=1(X2==XA(%M))
令D=Gcd(X,M),X=X’D,M=M’D。Ans=∑D|M∑N/DX′=1(XX′==X′A(%M′))=∑D|M∑N/DX′=1(XX′+YM′==X′A)
由于Gcd(X’,M’)==1,所以X’是Y的约数,Ans=∑D|M∑N/DX′=1(X+Y′M′==A)=∑D|M∑N/DX′=1(X==A(%M′))
∑N/DX′=1(X==A(%M′))=∑N/DX=1(DX+M′Y==A) 可以用Exgcd求出特解,再计算通解的个数,由于A是质数所以Gcd(D,M’)==1才能算贡献。
code
#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define min(a,b) ((a<b)?a:b)#define max(a,b) ((a>b)?a:b)#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const MxN=1e7;LL N,M,A;LL Exgcd(LL A,LL &X,LL B,LL &Y){ if(!B){X=1;Y=0;return A;} LL Gcd=Exgcd(B,Y,A%B,X); Y-=A/B*X; return Gcd;}LL Calc(LL D){ LL X,Y,Gcd=Exgcd(D,X,M/D,Y),Mo=M/D/Gcd; if(Gcd!=1)return 0; X=(X%Mo+Mo)%Mo; X=X*A%Mo;if(!X)X=Mo; if(N/D<X)return 0; return (N/D-X)/Mo+1;}int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); int T;scanf("%d",&T); fo(cas,1,T){ scanf("%lld%lld%lld",&N,&M,&A); LL Ans=0;LL Mx=sqrt(M); fo(d,1,Mx)if(M%d==0){ Ans+=Calc(d); if(d*d!=M)Ans+=Calc(M/d); } printf("%lld\n",Ans); } return 0;}
0 0
- 【jzoj4264】【tty妹子的函数】
- 妹子的flash作业
- 一个妹子的照片
- 妹子的心声
- 跑动的妹子
- 妹子!
- TTY的认识
- tty设备的疑惑
- tty 的流控
- Linux的终端设备tty
- TTY
- tty
- tty
- tty
- TTY
- tty
- tty
- TTY
- 洛谷 1449——后缀表达式(线性数据结构)
- 第二章 Spring MVC入门
- 函数注册与回调实例
- struts.xml配置问题
- tensorflow的安装教程(基于Ubuntu)
- 【jzoj4264】【tty妹子的函数】
- Linux网络预备知识
- hellow world
- mysql数据库服务提示This function has none of DETERMINISTIC的解决方法
- 第一章 Web MVC简介
- 基于Ceph快照的异地灾备设计
- MySQL数据库MyISAM与InnoDB存储引擎的比较
- 【dev Cpp新手请进】dev导入ege图形库
- poj 3254