poj 2065 高斯消元(取模的方程组)

免费获取船舶轨迹数据?手把手教你用Python处理中国海洋卫星AIS数据 本文详细介绍了如何免费获取中国海洋卫星AIS数据,并使用Python进行船舶轨迹数据的处理与分析。从数据源评估到自动化处理流水线,再到高级分析与可视化技巧,手把手教你避开常见问题,实现高效数据处理。特别适合航运数据分析、物流优化和海上安全研究等领域的研究者和开发者。 阅读详情

SETI
Time Limit: 1000MS Memory Limit: 30000K
Total Submissions: 1735 Accepted: 1085

Description

For some years, quite a lot of work has been put into listening to electromagnetic radio signals received from space, in order to understand what civilizations in distant galaxies might be trying to tell us. One signal source that has been of particular interest to the scientists at Universit´e de Technologie Spatiale is the Nebula Stupidicus. 
Recently, it was discovered that if each message is assumed to be transmitted as a sequence of integers a0, a1, ...an-1 the function f (k) = ∑0<=i<=n-1aiki (mod p) always evaluates to values 0 <= f (k) <= 26 for 1 <= k <= n, provided that the correct value of p is used. n is of course the length of the transmitted message, and the ai denote integers such that 0 <= ai < p. p is a prime number that is guaranteed to be larger than n as well as larger than 26. It is, however, known to never exceed 30 000. 
These relationships altogether have been considered too peculiar for being pure coincidences, which calls for further investigation. 
The linguists at the faculty of Langues et Cultures Extraterrestres transcribe these messages to strings in the English alphabet to make the messages easier to handle while trying to interpret their meanings. The transcription procedure simply assigns the letters a..z to the values 1..26 that f (k) might evaluate to, such that 1 = a, 2 = b etc. The value 0 is transcribed to '*' (an asterisk). While transcribing messages, the linguists simply loop from k = 1 to n, and append the character corresponding to the value of f (k) at the end of the string. 
The backward transcription procedure, has however, turned out to be too complex for the linguists to handle by themselves. You are therefore assigned the task of writing a program that converts a set of strings to their corresponding Extra Terrestial number sequences.

Input

On the first line of the input there is a single positive integer N, telling the number of test cases to follow. Each case consists of one line containing the value of p to use during the transcription of the string, followed by the actual string to be transcribed. The only allowed characters in the string are the lower case letters 'a'..'z' and '*' (asterisk). No string will be longer than 70 characters.

Output

For each transcribed string, output a line with the corresponding list of integers, separated by space, with each integer given in the order of ascending values of i.

Sample Input

3
31 aaa
37 abc
29 hello*earth

Sample Output

1 0 0
0 1 0
8 13 9 13 4 27 18 10 12 24 15

题意:

表示最开始并没有看懂题目是什么意思,那一串字母代表f[i]的值

f(k) = ∑0<=i<=n-1aiki (mod p)转换成方程组便是,

a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-1) = f(1)

a0*2^0 + a1*2^1+a2*2^2+........+an-1*2^(n-1) = f(2)

......

a0*n^0 + a1*n^1+a2*n^2+........+an-1*n^(n-1) = f(n)

然后利用高斯消元求解 


/*
poj 2065
解对mod取模的方程组
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
typedef long double ld;

using namespace std;
const int maxn = 105;

int equ,var;
int a[maxn][maxn];
int b[maxn][maxn];
int x[maxn];
int free_x[maxn];
int free_num;
int n;
void debug()
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j <= n; j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
}

int gcd(int a,int b)
{
    while(b)
    {
        int tmp = b;
        b = a%b;
        a = tmp;
    }
    return a;
}

int lcm(int a,int b)
{
    return a/gcd(a,b)*b;
}



int Gauss(int mod)
{
    int max_r,col,k;
    free_num = 0;
    for(k = 0,col = 0; k < equ && col < var; k++,col++)
    {
        max_r = k;
        for(int i = k+1; i < equ; i++)
        {
            if(abs(a[i][col]) > abs(a[max_r][col]))
                max_r = i;
        }
        if(a[max_r][col] == 0)
        {
            k --;
            free_x[free_num++] = col;
            continue;
        }
        if(max_r != k)
        {
            for(int j = col; j < var+1; j++)
                swap(a[k][j],a[max_r][j]);

        }
        for(int i = k + 1; i < equ; i++)
        {
            if(a[i][col] != 0)
            {
                int LCM = lcm(abs(a[i][col]),abs(a[k][col]));
                int ta = LCM / abs(a[i][col]);
                int tb = LCM / abs(a[k][col]);
                if(a[i][col] * a[k][col] < 0) tb = -tb;
                for(int j = col; j < var+1; j++)
                {
                    a[i][j] = ((a[i][j]*ta - a[k][j]*tb)%mod+mod)%mod;
                }
            }
        }

    }
    for(int i = k; i < equ; i++)
        if(a[i][col] != 0)
            return -1;
    if(k < var) return var-k;

    for(int i = var-1; i >= 0; i--)
    {
        ll temp = a[i][var];
        for(int j = i +1; j < var; j++)
            temp =((temp- a[i][j]*x[j])%mod+mod)%mod;
        while(temp % a[i][i]) temp += mod;
        temp /= a[i][i];
        temp %= mod;

        x[i] = temp;
    }
    return 0;

}

void ini()
{
    memset(a,0,sizeof(a));
    memset(x,0,sizeof(x));
    equ = n;
    var = n;
}


char str[105];
int main()
{
    int T,p;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&p);
        scanf("%s",str);
        n = strlen(str);
        ini();
        for(int i=0; i<n; i++)
        {
            if(str[i]=='*')
                a[i][n]=0;
            else
                a[i][n]=str[i]-'a'+1;
            a[i][0]=1;
            for(int j=1; j<n; j++)
                a[i][j]=(a[i][j-1]*(i+1))%p;
        }

        //debug();
        Gauss(p);

        for(int i = 0; i < n-1; i++)
            printf("%d ",x[i]);
        printf("%d\n",x[n-1]);
    }
    return 0;
}





SAP UI5 控件剖析系列之 sap.m.DatePicker:单日选择的工程化用法、最佳实践与常见坑 在 SAP UI5 的输入控件族里,是最常被使用的日期选择控件。它把一个可编辑的输入框与一个弹出的日历整合在一起,允许用户用触摸、鼠标或键盘在本地化格式下选择某一天;控件既可以从弹出的日历里点选,也可以直接在输入框里键入日期。官方 Fiori 设计规范对它的定位就是:完成单个日期的选择,不牵涉时间,也不负责跨天的范围选择。 阅读详情

相关推荐

Transformer论文解读

Transformer有多牛逼不用多说,时隔7年我们再来看看论文原文,看看这篇深刻改变世界的文章都说了什么。当然逐字逐句解读已经意义不大,我们只列考点。

xian0710830114的专栏 4405

poj 2065 SETI(高斯消元)

SETI Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1469   Accepted: 899 Description For some years, quite a lot of work has been put into listening to

街角的花街糖 734

Hermes Agent Windows安装教程:本地智能体离线部署实战

本地智能体(Local Agent)是一种运行在用户设备端、无需云端依赖即可响应自然语言指令并自动化执行任务的轻量级AI运行时框架。其核心原理基于配置驱动的任务监听与脚本调用机制,通过服务化驻留实现持续响应能力,技术价值在于保障数据隐私、规避API调用限制、适配内网及老旧系统环境。典型应用场景包括财务报表自动整理、科研仪器数据归档、IT资产变更通知等Windows桌面自动化需求。本文聚焦Hermes Agent这一主流开源实现,围绕Windows平台特有的服务注册、权限模型、杀软拦截、中文路径与YAML编码

weixin_34411563的博客 433

青蛙的约会 POJ - 1061

一、内容 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐...

Tizzi的博客 1187

Kali Linux实战:用Impacket的secretsdump.py快速提取Windows域控哈希(附避坑指南)

本文详细介绍了如何在Kali Linux中使用Impacket的secretsdump.py脚本快速提取Windows域控哈希,包括环境准备、原理剖析、实战操作及常见问题解决方案。特别适合CTF竞赛和网络信息安全爱好者学习,提升渗透测试效率。

weixin_33670786的博客 410

基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程

利用STM32单片机移植NES游戏模拟器,完成NES游戏开发,可以玩标准的NES游戏,已测试超级玛丽、魂斗罗之类的都可以正常运行。

4万+

线性代数 —— 高斯消元法

【概述】 高斯消元法主要用于求解线性方程组,也可以求矩阵的秩、矩阵的逆等,是一个重要的数学方法。 其时间复杂度主要与方程组个数、方程组未知数个数有关,一般来说,时间复杂度为 O(n^3) 【线性方程组】 线性方程组:有多个未知数,且每个未知数的次数均为一次,这样多个未知数所组成的方程组。 其形式为: 记为矩阵形式,有: 【高斯消元法】 高斯消元法的基本思想是:通过一系列的加减...

Alex_McAvoy的博客 6万+

2026年数学建模国赛B题无线电干扰源的快速自动定位与清除 论文详细解析

数学建模竞赛论文无线电干扰源的快速自动定位与清除2026 年高教社杯全国大学生数学建模竞赛 B 题完整求解论文交会定位、极大极小测点优化、自适应多频道搜索与定向源恢复的统一建模模型、算法、代码、图表与验证一体化交付本文研究圆形目标区域中多个未知无线电干扰源的快速检测、定位与清除问题,建立了由误差楔交会模型、角度观测信息模型、分层勘测模型、鲁棒射线交会模型和定向覆盖反馈模型组成的统一求解框架。模型同时覆盖题目中的四个子问题:多测向射线形成的多边形定位区域及直径、第二个测点的极大极小优选、全向源自动搜索清除策略

YOLO 357

高斯消元求行列式(取模)

int gauss(int A[N][N],int n) { int ans = 1; for(int i=1;i<=n;i++) { for(int j=i;j<=n;j++) { if(A[j][i]) { for(int k=i;k<=n;k++) swap(A[i][k], A[j][k]); if(i!=j) ans=-ans; break; } } if(!A[i][i]) return 0; for(int

qq_51737737的博客 992

31、MSP430FR2355时钟系统与低功耗模式解析

本文详细解析了MSP430FR2355的时钟系统和低功耗模式。首先介绍了时钟系统的组成,包括XT1振荡器、DCO、MODCLK、MCLK、SMCLK和ACLK的功能与配置方法。接着探讨了MSP430FR2355的五种低功耗模式及其配置要点,并分析了时钟系统与低功耗模式之间的协同关系。最后通过实际应用案例展示了如何在具体场景中优化系统功耗。文章旨在帮助开发者充分利用MSP430FR2355的时钟与低功耗特性,实现高性能、低功耗的嵌入式系统设计。

mars5的博客 195

Android性能优化之Android Profiler

在移动应用开发中,打造一个流畅、省电且不卡顿的用户体验是至关重要的。然而,随着应用功能的日益复杂,内存泄漏、CPU暴涨、网络卡顿以及电量消耗过快等问题常常化身为隐形杀手,悄悄吞噬着用户体验。为了帮助开发者精准定位并解决这些性能瓶颈,谷歌在Android Studio中集成了一款强大的一站式性能分析工具Android Profiler。Android Profiler作为Android Studio内置的实时数据可视化工具,支持运行在Android 5.0及更高版本的设备上。

xiangzhihong8的专栏 201

poj 2947 高斯消元求解方程组取模

题意: (mat[1][1]*x[1] + mat[1][2]*x[2] + … + mat[1][n]*x[n])%7 =mat[1][n+1] (mat[2][1]*x[1] + mat[2][2]*x[2] + … + mat[2][n]*x[n])%7 =mat[2][n+1] … … (mat[m][1]*x[1] + mat[m][2]*x[2] +

渐近自由 723

杰理JL701N V142的SDK实现双备份自定义OTA教程和代码分享

摘要 本文档详细介绍了基于JL701N SDK的UART OTA升级功能开发方案。该方案采用双备份(Dual Bank)机制,通过串口实现安全可靠的固件远程更新。核心特性包括:1) 双备份升级机制确保升级失败可回滚;2) CRC-16/XMODEM校验保障数据完整性;3) 灵活的传输控制,支持自定义波特率和数据包大小。文档提供了完整的系统架构、API接口说明、通信协议规范以及移植指南,适用于生产烧录、现场升级等多种场景。配套Python升级工具简化了升级流程,使开发人员能够快速实现固件更新功能。

qq_42014563的博客 275

POJ 2065 高斯消元取模解方程组

题意: a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-1) = f(1) a0*2^0 + a1*2^1+a2*2^2+........+an-1*2^(n-1) = f(2) ...... a0*n^0 + a1*n^1+a2*n^2+........+an-1*n^(n-1) = f(n) 解这个方程组。 #include <iost...

胖亚亚的小酒馆 865

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

poj 2065 高斯消元取模解方程组

题意: a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-1) = f(1) a0*2^0 + a1*2^1+a2*2^2+........+an-1*2^(n-1) = f(2) ...... a0*n^0 + a1*n^1+a2*n^2+........+an-1*n^(n-1) = f(n) 解这个方程组。 代码:

渐近自由 522

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

POJ - 2065 SETI(高斯消元解方程(取模))

题目链接:点击查看 题目大意:给出一个质数作为 mod,再给出一个字符串,每个字母对应着一个数字: ' * ' = 0 ' a ' = 1 ' b ' = 2 ... ' z ' = 26 假设字符串长度为 n,题目给出了 n 个线性同余方程需要求解 ... 题目分析:因为未知数和方程组的个数都不是很多,所以直接套上模 //#pragma GCC optimize(2) //#pragma GCC optimize("Ofast","inline","-ffast-math")

Falcon的博客 591

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ2065 SETI 高斯消元

题目链接:http://poj.org/problem?id=2065 题目大意:给你一个素数P(P 定义: f (k) = ∑0 求a0、a1.....an-1。题目保证肯定有唯一解。 分析:高斯消元。根据上面的公式显然可以列出有n个未知数的n个方程式: a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-

AC_Gibson的专栏 1111

POJ 2065-SETI(高斯消元求解同余方程式)

题目地址:POJ 2065 题意:输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'*'对应0,‘a’对应1,‘b’对应2....            eg:str[] = "abc", 那么说明 n=3, 字符串所对应的数列为1, 2, 3。            同时题目定义了一个函数:a0*1^0 + a1*1^1+a2*1^2+........

Rocky0429 2323

POJ 2065 高斯消元+线性模方程

消元过程为保持整数用最小公倍数。 回代过程用线性模方程 计算过程注意保持模n下的非负数。 #include #include #include #include #include #include #include #include #include #include using namespace std; int p,n; char s[1000]; int a[10

Jackyguo1992的专栏 896

POJ 2065 SETI(高斯消元)

题目链接:http://poj.org/problem?id=2065 题意:给出一个字符串S[1,n],字母a-z代表1到26,*代表0。我们用数组C[i]表示S[i]经过该变换得到的数字。给出一个素数p。有n个未知数X[1,n]。解方程: 思路:消元时让上一个方程乘以一个数下一个方程乘以一个数使得对应位置的数字相等,直接减去即可。最后的a[i][i]*X[i]%p=a[i][n+1]直...

weixin_33939843的博客 161

[POJ2065]SETI(高斯消元)

题目描述传送门 题意: 良心博主才会给出题意… 直接说方程是什么吧… 首先a…z=1..26,*=0 读入p(模数且为质数),s(下标从0开始),s长度为n 那么求方程组 10x1+11x2...1n−1xn≡s1(modp)1^0x_1+1^1x_2...1^{n-1}x_n\equiv s_1\pmod p 20x1+21x2...2n−1xn≡s2(modp)2^0x_1+2^

zyf2000 931

poj 2065 SETI(高斯消元求模线性方程组)

题意: 给出一个方程f (k) = ∑0aiki (mod p) always evaluates to values 0 每个字母代表一个f[k], a代表1,b代表2,以此类推,*代表0.让你求出ai并输出。 思路: 方程已经给出,直接建立方程,只要建立方程的过程没有写错,套用下高消求模线性方程组的模板即可,与poj 2947如出一辙,我直接套用那题的高消了,然后就过了。

johsnows的博客 521

【高斯消元】【poj 2065】SETI

http://poj.org/problem?id=2065 还是没有明白guass()怎么工作的,反正照着模板打就A了。。。 //#define _TEST _TEST #include #include #include #include #include #include using namespace std; /**********************

willinglive 592

POJ2065 SETI(高斯消元 同模方程)

(a1*1^0+a2*1^1+...an*1^n - 1)%P= f1 .... (a1*n^0+a2*n^1+...an - 1 * n ^ n - 1)%P= fn 消元中A[k][i] % A[i][i]不为0时将A[k][i]变为他们的最小公倍数,即整行都乘上lcm(A[k][i], A[i][i]) ...

Nobel7889的专栏 279

POJ 2065 SETI 高斯消元

转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents           by---cxlove 依旧高斯消元,重要的是列方程 a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-1) = f(1) a0*2^0 + a1*2^1+a2*2^2+........+an-1*2^(n-1)

窝不是爱酱,喵~~~~ 1843

高斯消元几道入门题总结POJ1222&&POJ1681&&POJ1830&&POJ2065&&POJ3185

最近在搞高斯消元,反正这些题要么是我击败了它们,要么就是这些题把我给击败了。现在高斯消元专题部分还有很多题,先把几道很简单的入门题总结一下吧。 专题:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=29538#overview 专题地址来源于kuangbin大神,多谢kuangbin大神总结的高斯消元的模板,菜鸟在此谢过啊。 P

1127
上一篇: poj3185 高斯消元
下一篇: poj2947 高斯消元
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值