CERC2017 F: Faulty Factorial 简单数论题

 

 

 

复制代码
 1 #include  <iostream>
 2 using namespace std;
 3 #define ll long long 
 4 const int N  = 10000006;
 5 ll n,p,r;
 6 ll poww(ll a,ll b){
 7     ll ans  =1ll;
 8     while(b){
 9         if(b&1) ans =ans*a%p;
10         b>>=1;
11         a=a*a%p;
12     }
13     return ans%p;
14 }
15 int  main()
16 {
17     //每次都要注意-1 -1的情况
18     scanf("%lld%lld%lld",&n,&p,&r);
19     if(n>=2*p){
20         if(r==0){
21             printf("%lld 1\n",p+1);
22         }
23          else{
24              printf("-1 -1\n");
25          }
26     }
27     else if(n>=p){
28         if(r==0){
29             int flag =0;
30             for(ll i=2;i<=n;i++){
31                 if(i!=p)//起初if的{}写错了
32                 {                    
33                 printf("%lld 1\n",i);
34                 flag =1;
35                 break;
36                 }
37             }
38             if(!flag)printf("-1 -1\n"); //n=p=2
39         }
40         else{
41             ll ans=1ll;
42             for(ll i=2;i<=n;i++) {
43                 if(i!=p) ans =ans*i%p;
44             }
45             int  flag =0;
46             for(ll i=1;i<p;i++){
47                 if(ans*i%p==r) {
48                     printf("%lld %lld\n",p,i);
49                     flag =1;
50                     break;
51                 }
52             }
53             if(flag==0) printf("-1 -1\n");
54         }
55     }
56     else{
57         ll ans =1ll;
58         for(ll i=2;i<=n;i++) ans =ans*i%p;
59         int  flag =0;
60         ans = poww(ans,p-2);//放到里面会超时
61         for(ll i=2;i<=n;i++){
62             ll x= r*i%p*ans%p;
63             // ans/i*x%p==r
64             // x=r*i%p/ans%p;
65             if(x>=1&&x<i){
66                 printf("%lld %lld\n",i,x);
67                 flag =1;
68                 break;
69             }
70         }
71         if(!flag) printf("-1 -1\n");
72     }
73     return 0;
74     
75 }
复制代码

 

posted on   cltt  阅读(231)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示