• Poj3696 The Lukiest Number


    传送门

    Solution

    懒得写啦

    Code

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #define Rg register
     5 #define go(i,a,b) for(Rg int i=a;i<=b;i++)
     6 #define yes(i,a,b) for(Rg int i=a;i>=b;i--)
     7 #define ll long long
     8 using namespace std;
     9 int read()
    10 {
    11     int x=0,y=1;char c=getchar();
    12     while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
    13     while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
    14     return x*y;
    15 }
    16 ll T,L,d,n,m,ans,c;
    17 bool flag=0;
    18 ll gcd(ll x,ll y){return y==0?x:gcd(y,x%y);}
    19 ll phi(ll x)
    20 {
    21     ll sm=x,y=x;
    22     go(i,2,sqrt(y))
    23     {
    24         if(x%i==0)sm=sm/i*(i-1);
    25         while(x%i==0)x/=i;
    26     }
    27     if(x>1)sm=sm/x*(x-1);
    28     return sm;
    29 }
    30 ll mul(ll x,ll y,ll mod)
    31 {
    32     ll sm=0;
    33     while(y)
    34     {
    35         if(y&1)sm=(sm+x)%mod;
    36         x=(x<<1)%mod;y>>=1;
    37     }
    38     return sm;
    39 }
    40 ll ksm(ll x,ll y,ll mod)
    41 {
    42     ll sm=1;
    43     while(y)
    44     {
    45         if(y&1)sm=mul(sm,x,mod);//注意这里直接乘起来会溢出
    46         x=mul(x,x,mod);y>>=1;
    47     }
    48     return sm;
    49 }
    50 int main()
    51 {
    52     while(1)
    53     {
    54         scanf("%lld",&L);if(!L)break;T++;flag=0;ans=0;
    55         if(8%L==0){printf("Case %lld: 1
    ",T);continue;}
    56         d=gcd(L,8);n=9*L/d;m=phi(n);c=sqrt(m);
    57         go(i,2,c)
    58         {
    59             if(m%i==0&&ksm(10,i,n)==1){ans=i;flag=1;break;}
    60         }
    61         if(!flag)
    62             yes(i,c,2)
    63             {
    64                 if(m%i==0&&ksm(10,m/i,n)==1){ans=m/i;break;}
    65             }
    66         printf("Case %lld: %lld
    ",T,ans);
    67     }
    68     return 0;
    69 }
    View Code
    光伴随的阴影
  • 相关阅读:
    数据仓库_Linux(3)
    2.1(构造序对)
    要修改一万个位置的jdk版本
    8个球7个一样重的,有一个偏重,一个天平,如何两次找出偏重的小球
    玄学
    异常:java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag
    提高输入效率
    fan
    idea
    打印整数的补码
  • 原文地址:https://www.cnblogs.com/forward777/p/10519637.html
Copyright © 2020-2023  润新知