zoukankan      html  css  js  c++  java
  • 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
    ",p+1);
    22         }
    23          else{
    24              printf("-1 -1
    ");
    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
    ",i);
    34                 flag =1;
    35                 break;
    36                 }
    37             }
    38             if(!flag)printf("-1 -1
    "); //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
    ",p,i);
    49                     flag =1;
    50                     break;
    51                 }
    52             }
    53             if(flag==0) printf("-1 -1
    ");
    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
    ",i,x);
    67                 flag =1;
    68                 break;
    69             }
    70         }
    71         if(!flag) printf("-1 -1
    ");
    72     }
    73     return 0;
    74     
    75 }
  • 相关阅读:
    Bootstrap 网格系统(Grid System)实例2
    Bootstrap 网格系统(Grid System)实例1
    Bootstrap 网格系统(Grid System)
    Bootstrap CSS概览
    Bootstrap响应式布局(1)
    46、谈谈你对面向对象的理解?
    算法--练习题1
    堆排序----赠品2
    计数排序----赠品1
    45、如何使用python删除一个文件?
  • 原文地址:https://www.cnblogs.com/tingtin/p/10667328.html
Copyright © 2011-2022 走看看