码迷,mamicode.com
首页 > 其他好文 > 详细

Bzoj2219 数论之神

时间:2017-05-04 00:00:19      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:arch   turn   ret   name   getch   str   根据   指标   getc   

Time Limit: 3 Sec  Memory Limit: 259 MB
Submit: 954  Solved: 268

Description

在ACM_DIY群中,有一位叫做“傻崽”的同学由于在数论方面造诣很高,被称为数轮之神!对于任何数论问题,他都能瞬间秒杀!一天他在群里面问了一个神题: 对于给定的3个非负整数 A,B,K 求出满足 (1) X^A = B(mod 2*K + 1) (2) X 在范围[0, 2K] 内的X的个数!自然数论之神是可以瞬间秒杀此题的,那么你呢?

Input

第一行有一个正整数T,表示接下来的数据的组数( T <= 1000) 之后对于每组数据,给出了3个整数A,B,K (1 <= A, B <= 10^9, 1 <= K <= 5 * 10^8)

Output

输出一行,表示答案

Sample Input

3
213 46290770 80175784
3 46290770 80175784
3333 46290770 80175784

Sample Output

27
27
297

HINT

 新加数组一组--2015.02.27

Source

 

数学问题  原根 阶 指标 中国剩余定理 脑洞题

吼题

 

学姐的讲解很棒棒 http://blog.csdn.net/regina8023/article/details/44863519

 

模数$P=2*K+1$很大,在这个范围下没什么方法可以有效计算,所以需要优化数据范围。

将P分解质因数,$p_{1}^{a1}+p_{2}^{a2}+p_{3}^{a3}+...$

分别在每个模$ p_{i}^{ai} $ 的意义下计算出答案,将这些答案累乘起来就是最终的答案。(在每个模意义下选出一个解,则构成了一组同余方程,根据中国剩余定理,每组同余方程对应一个唯一解,所以可以用乘法原理统计总答案数)

假设当前我们在处理一个$p^{a}$

现在需要求$x^a \equiv b (\mod  p^{a})$的解个数

 

 

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstring>
 6 #define LL long long
 7 using namespace std;
 8 const int mod=1e9+7;
 9 const int mxn=1000010;
10 int read(){
11     int x=0,f=1;char ch=getchar();
12     while(ch<0 || ch>9){if(ch==-)f=-1;ch=getchar();}
13     while(ch>=0 && ch<=9){x=x*10+ch-0;ch=getchar();}
14     return x*f;
15 }
16 int n;
17 int a[mxn];
18 int f[mxn];
19 int main(){
20 //    freopen("in.txt","r",stdin);
21     int i,j,cnt=0;
22     n=read();
23     for(i=1;i<=n;i++){a[i]=read();if(a[i]==1)cnt++;}
24     f[0]=1;f[1]=1;f[2]=2;
25     for(i=3;i<=cnt;i++)f[i]=((LL)f[i-1]+(LL)f[i-2]*(i-1)%mod)%mod;
26     for(i=n;i>cnt;i--)f[cnt]=(LL)f[cnt]*i%mod;
27     printf("%d\n",f[cnt]);
28     return 0;
29 }

 

Bzoj2219 数论之神

标签:arch   turn   ret   name   getch   str   根据   指标   getc   

原文地址:http://www.cnblogs.com/SilverNebula/p/6804361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!