密码+a simple problem(太原理工大学重现赛卡住的题

2024-02-26 18:08

本文主要是介绍密码+a simple problem(太原理工大学重现赛卡住的题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

密码+a simple problem(太原理工大学重现赛卡住的题
在这里插入图片描述

#include<bits/stdc++.h>
#define mod int(1e9+7)
using namespace std;
int n,l,r,ans;
int main(){cin>>n;while(n--){cin>>l>>r;int res=0;//6种情况if(l%2==0&&r&1){if( (r-l+1)/2 &1 )res=1;else res=0;}if(l%2==0&&r%2==0){if((r-l)/2 &1)res=1^r;else res=0^r;}if((l&1)&&(r&1)){if((r-l)/2 &1)res=l^1;else res=l^0;}if((l&1)&&(r%2==0)){if((r-l+1)/2 &1)res=l^0^r;else res=l^1^r;}ans=(ans+res)%mod;}cout<<ans;
}

太原理工大学重现赛的最后一道题,当时没做出来,现在觉得好简单啊


在这里插入图片描述
接下来这道题是最难的一道题
根据题意所给,推出公式
弄出系数矩阵
用矩阵运算求解
在这里插入图片描述

#include<bits/stdc++.h>
#define int long long
#define mod 1000000007
using namespace std;
typedef long long LL;
typedef int mat[8][8];void mul(mat a,mat b){mat c={};for(int i=0;i<8;i++)for(int j=0;j<8;j++)for(int k=0;k<8;k++)c[i][j]=(c[i][j] + a[i][k]*b[k][j] )%mod;for(int i=0;i<8;i++)for(int j=0;j<8;j++)a[i][j]=c[i][j];
}void qpow(mat b,int n){mat c;for(int i=0;i<8;i++)for(int j=0;j<8;j++)c[i][j]=(i==j);for(;n;n/=2,mul(b,b)){if(n&1)mul(c,b);}    memcpy(b,c,sizeof(c));
}const int N=100010;
int f[N],h[N],I[N],F[N];int a,b,x;
signed main(){cin>>a>>b>>x;//这是最难搞出来的系数矩阵,你要多少个元素,你要定义多少个变量//都是取决于你化简出来的公式int t[8][8]={{1,0,0,0,0,0,0,0},{-1,1,0,0,0,0,0,0},{1,0,1,0,0,0,0,0},{1,1,1,1,0,0,0,0},{a,0,a,0,a,0,1,0},{a,a,a,a,a,a,0,1},{b,0,b,0,b,0,0,0},{2*b,b,2*b,b,2*b,b,0,0}};//初始的东西而已,最后的答案是ans【n】=ans【n-1】*系数矩阵的第一列f[0]=0,f[1]=1;h[0]=0,h[1]=1;I[0]=0,I[1]=1;F[0]=0,F[1]=1;qpow(t,x-1);int ans=0;int init[8]={1,1,1,1,1,1,0,0};//这个是原向量//n-1个系数矩阵相乘后,最后的一步运算(也就是第n次运算要用到这个init向量for(int i=0;i<8;i++)ans=(ans+init[i]*t[i][0])%mod;cout<<ans;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这道题真的难
看着题解写的,顺着思路写下来finish后感觉真的蛮难的
爽!
弄了一下午了
真的爽!!!!!

这篇关于密码+a simple problem(太原理工大学重现赛卡住的题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/749711

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

mysql导出导入数据和修改登录密码

导出表结构: mysqldump -uroot -ppassword -d dbname tablename>db.sql; 导出表数据: mysqldump -t dbname -uroot -ppassword > db.sql 导出表结构和数据(不加-d): mysqldump -uroot -ppassword dbname tablename > db.sql;

11991 - Easy Problem from Rujia Liu?

题意: 输入一串整型数列,再输入两个数k,v,输出第k个v的序号。不存在则输出0,如第一个样例 8 41 3 2 2 4 3 2 11 3 //第1个3,序号为2,输出22 4 //第2个4,不存在,输出03 2 //第3个2,序号为7,输出74 2 思路: struct num {

Ubuntu 环境下ssh的安装、使用以及免密码登录

以两台机器为例:     A12.12.10.11B12.12.10.13 安装: Ubuntu默认安装了ssh客户端,只需要在被登录的机器上安装ssh服务器即可: $ sudo apt-get install openssh-server     启动ssh服务器: $ sudo /etc/init.d/ssh start 查看是否启动成功: $ ps -ef |grep

ubuntu 20.04 一直卡在登录界面,即使密码正确也无法登录(失败记录)

ubuntu 20.04 一直卡在登录界面,即使密码正确也无法登录 这次是装实体机,一次失败的尝试。。。 名称型号CPUIntel Xeon E5-2673 V3GPURTX 3060 mobile 安装的时候不要选install third-party software for graphics and Wi-fi hardware and additional media