蓝桥杯:字符串

2023-11-20

题目链接

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2000 + 117;
char s[MAXN];
int len;
int a[MAXN];
int fact[MAXN];
int M;
int num, now;
void sub(int mul, int order) {//这里的操作是把a[i]删除
    int sum = fact[order];
    sum = sum * mul % M;
    now = ((now - sum) % M + M) % M;//减去sum在加M是为了防止负数出现
}
void add(int mul, int order) {
    int sum = fact[order];
    sum = sum * mul % M;
    now = (now + sum) % M;
}
void init() {//预处理幂次
    scanf("%s", s);
    scanf("%d", &M);
    fact[0] = 1;
    for(int i = 1; i < MAXN; i++) fact[i] = fact[i - 1] * 26 % M;//fact的作用是选择某一个位置如个位 十位
    len = strlen(s);
    for(int i = 0; i < len; i++) {
        a[i] = s[i] - 'A';
        num = (num * 26 + a[i]) % M;
    }
}
int main() {
    init();
    if(num == 0) puts("0 0");
    else {
        bool pr = false;
        for(int i = 0; i < len && !pr; i++) {
            for(int j = 0; j < len && !pr; j++) {
                now = num;
                sub(a[i], len - 1 - i);//这里选择两个位置先减去在换位置相加
                sub(a[j], len - 1 - j);
                add(a[i], len - 1 - j);
                add(a[j], len - 1 - i);
                if(now == 0) {
                    printf("%d %d\n", i + 1, j + 1);//不要忘了加一
                    pr = true;
                }
            }
        }
        if(!pr) puts("-1 -1");
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯:字符串 的相关文章

  • 武汉大学空间智能化处理复习

    空间数据处理智能化的重要性 提高地理信息处理的效率 减轻人在地理信息处理中的劳动量 使一般的地理信息用户也能让专家一样解决问题 大型的空间决策服务需要归纳 分析多种方案 智能化处理方法的来源 常常来自于人工智能学科的研究成果 如 知识工程
  • CTK框架介绍和环境搭建

    CTK框架介绍和环境搭建 概述 本人第一次接触CTK的时候是看的一去 二三里大佬的博客 CTK框架实际应用比较可靠 但网上资料很少 官网提供的API链接也已经无法打开了 目前还没有找到很好的官方的使用介绍 网上目前找到的CTK的介绍或者是博
  • Sklearn笔记--逻辑回归调参指南

    1 逻辑回归概述 p y

随机推荐