zoukankan      html  css  js  c++  java
  • 1

    https://blog.csdn.net/JiangHxin/article/details/104032351

    import java.util.Deque;
    import java.util.HashMap;
    import java.util.LinkedList;
    import java.util.Map;
    import java.util.Queue;
    import java.util.Scanner;
    import java.util.concurrent.LinkedBlockingDeque;
    
    public class Main {
        static  int a[] =new int[2005];
        static  int mod;
        
        public static int gets(String s) {//把字符转化为十进制数 
            int ans=0;
            int n=s.length();
            for(int i=0;i<n;i++) {
                ans=ans*26+s.charAt(i)-'A';
                ans%=mod;//防止数据溢出 
            }
            return ans;
        }
        
        public static void main(String[] args) {
            Scanner cin=new Scanner(System.in);
            
            String s=cin.next();
            mod=cin.nextInt();
            int n=s.length();
           // System.out.println(n);
           
            int ans=gets(s);
            
            if(ans==0) {
                System.out.println("0 0");
                return ;
            }
            
            a[n-1]=1;
            
            for(int i=n-2;i>=0;i--) {//每一位的权值 
                a[i]=26*a[i+1]%mod;
                //System.out.println(a[i]);
            }
            for(int i=0;i<n;i++)
                for(int j=i+1;j<n;j++)
                {
                    int res=(s.charAt(i)-s.charAt(j))*a[j]+(s.charAt(j)-s.charAt(i))*a[i];//变化值 
                    
                    if( (res+ans+mod)%mod==0) {
                        System.out.println(++i +" "+ ++j);
                        return ;
                    }
                }
            System.out.println("-1 -1");
        }
    }
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    using namespace std;
    
    char s[2005];
    int a[2005];
    int mod;
    
    int ge(char s[])
    {
        int ans=0;
        int len=strlen(s);
        for(int i=0;i<len;i++)
        {
            ans=ans*26+s[i]-'A';
            ans%=mod;
        }
        return ans;
    }
    
    int main()
    {
        scanf("%s",s);
        scanf("%d",&mod);
        int ans=ge(s);
        
        if(ans==0)
        {
            printf("0 0
    ");
            return 0;
        }
    
            int n=strlen(s);
            a[n-1]=1;
            for(int i=n-2;i>=0;i--)
            {
                a[i]=a[i+1]*26%mod;
            }
            for(int i=0;i<n;i++)
            {
                for(int j=i+1;j<n;j++)
                {
                    int res=(s[i]-s[j])*a[j]+(s[j]-s[i])*a[i];
                    
                    if((res+ans+mod)%mod==0)
                    {
                    //    printf("!!!!!!!
    ");
                        printf("%d %d
    ",++i,++j);
                        return 0;
                    }
                }
            }
            
        
        printf("-1 -1
    ");
        return 0;
    }
  • 相关阅读:
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    5.14
    5.13
    5.12
  • 原文地址:https://www.cnblogs.com/qqshiacm/p/12803925.html
Copyright © 2011-2022 走看看