5.24 基础题目

 

快速幂

#include<bits/stdc++.h>
using namespace std;
//126348976 982638476 938420413
int main(){
    int a,b,p;
    cin>>a>>b>>p;
    long long res = 1,ci=1;
    int flag=0;
    if(b==0){
            res%=p;
        }
    else{
        while(b){
    	if (flag==0)ci=a%p;
    	else
          ci=(ci%p)*(ci%p)%p;
        
		if (b&1)res=(res*(ci%p))%p;
        b>>=1;
        flag++;
        //cout<<ci<<"  "<<res<<endl;
    }
    }
    cout<<res<<endl;
    return 0;
}

64位整数乘法

#include<bits/stdc++.h>
/*
a*b=a+a+a+...+a
a*1=a
a*2=2a
a*4=4a;
...
a*(2^k)=2^k*a;
*/
using namespace std;
typedef long long LL;
int main(){
    LL a,b,p;
    cin>>a>>b>>p;
    LL res=0;
    while(b){
        if(b&1)res=(res+a)%p;
        b>>=1;
        a=a*2%p;
    }
    cout<<res<<endl;
    return 0;
}

最短Hamilton路径

1s约计算1亿次;

 f[state][j]=

f[state_k][j]+weight[k][j];

state_k是state除去j之后的集合,state_k要包含k,k是state_k二进制表示中为1的下标,枚举出k

state_k=state-2^j;

for (int j = 0;j < 点数;j++){//n点数

        if ((state_k>>j )& 1 == 0)

          {    

                state=state_k+2^j;

                f[state][j]=f[state_k][j]+weight[k][j];

          }

}

 

#include <bits/stdc++.h>

using namespace std;
const int N=20,M=1<<20; 
int n;
int f[M][N],weight[N][N];
int main(){
	cin>>n;
	for(int i = 0;i < n;i++)
		for(int j = 0;j < n;j++){
			cin>>weight[i][j];
		}
		
	memset(f,0x3f,sizeof(f));
	f[1][0]=0;
	for(int i = 0;i < 1<<n;i++)//枚举所有的状态 
		for(int j = 0;j < n;j++){//枚举状态i二进制表示中所有的1的位置 
			if(i>>j & 1)
				for(int k = 0;k < n;k++)//枚举状态i去掉第j位后的剩余的1的位置 
					if(i-(1<<j) >> k & 1)//第k位是1 
						f[i][j]=min(f[i][j],f[i-(1<<j)][k]+weight[k][j]);
		}
	cout<<f[(1<<n)-1][n-1]<<endl;
	return 0;
}

汉诺塔问题(三塔)

#include <bits/stdc++.h>
using namespace std;
//f(x)=2^x-1
int hnt(int st,int mid,int dst,int n){
	if(n==1){
		//cout<<"from "<<char(st)<<" through "<<char(mid)<<" to "<<char(dst)<<" with "<<n<<endl;
		return 1;
	}
	else {
		int sum=0;
		cout<<"from "<<char(st)<<" through "<<char(dst)<<" to "<<char(mid)<<" with "<<n-1<<endl;
		sum+=hnt(st,dst,mid,n-1);
		cout<<"from "<<char(st)<<" through "<<char(mid)<<" to "<<char(dst)<<" with "<<1<<endl;
		sum+=hnt(st,mid,dst,1);
		cout<<"from "<<char(mid)<<" through "<<char(st)<<" to "<<char(dst)<<" with "<<n-1<<endl;
		sum+=hnt(mid,st,dst,n-1);
		return sum;
	}
}
int main(){
	int st,mid,dst,n;
	st=int('A'),mid=int('B'),dst=int('C');
	n=12;
	int ans = hnt(st,mid,dst,n);
	cout<<ans;
	return 0;
} 



四塔汉诺塔问题

// 凡是用到min的都需要,赋较大值。
    // memset以字节形式重置(int: 0x3f3f3f3f)
    //又0x3f的2倍为最大整数,所以还可以满足加法不越界

#include<bits/stdc++.h>

using namespace std;
const int N=15;
int d[N],f[N];
int main(){
    d[1]=1;
    for(int i = 2;i <=12;i++ )
    d[i]=d[i-1]+1+d[i-1];
    memset(f,0x3f,sizeof(f));
    f[0]=0;
    f[1]=1;
    //先让i个盘到B塔或者C塔,剩下的n-i盘在3塔情况下移到D
//再将i盘在4塔(因为D塔都是更重的盘)情况下移动到D。因为对于i我们不知道哪个最优,因此
//因此推导为 f[n] = min(f[n],2*f[i]+d[n-i])(for i in [1..n-1])
	for(int i =2;i <= 12;i++)
		for(int j = 1;j < i;j++)
			f[i]=min(f[i],f[j]+d[i-j]+f[j]);
	for(int i =1;i <= 12;i++)
		cout<<f[i]<<endl;
    
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22880.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

吉时利 Keithley 2700数据采集器技术参数

概述&#xff1a; 每个 2700 系列系统均将精密测量、开关和控件集于一个紧凑集成的机箱中&#xff0c;适用于机架安装或台式应用。虽然所有三个系统的核心功能和编程是相同的&#xff0c;但各个主机都具有独特的功能。例如&#xff0c;2701 型具有 10/100BaseTX 以太网接口&am…

面试被问麻了...

前几天组了一个软件测试面试的群&#xff0c;没想到效果直接拉满&#xff0c;看来大家对面试这块的需求还是挺迫切的。昨天我就看到群友们发的一些面经&#xff0c;感觉非常有参考价值&#xff0c;于是我就问他还有没有。 结果他给我整理了一份非常硬核的面筋&#xff0c;打开…

linux0.12-10-1-总体功能

第10章 字符设备驱动程序 [466页] 10-1 总体功能 本章的程序可分成三部分: 第一部分是是关于RS-232串行线路驱动程序&#xff0c;包括程序rs_io.s和serial.c&#xff1b; 第二部分是涉及控制台的驱动程序&#xff0c;包括键盘中断驱动程序keyboard.S和控制台显示驱动程序con…

韦东山Linux驱动入门实验班(2)hello驱动---驱动层与应用层通讯,以及自动产生设备节点

前言 &#xff08;1&#xff09;学习韦东山老师的Linux&#xff0c;因为他讲的很精简&#xff0c;以至于很多人听不懂。接下来我讲介绍韦东山老师的驱动实验班的第二个Hello程序。 &#xff08;2&#xff09;注意&#xff0c;请先学习完视频再来看这个教程&#xff01;本文仅供…

iptables防火墙2

文章目录 iptables防火墙21 SNAT1.1 原理1.2 应用环境1.3 转换前提条件1.4 SNAT转换 2 DNAT2.1 原理2.2 应用环境2.3 转换前提条件 3 SNAT转换3.1 先配置作为网关服务器的虚拟机3.2 修改ens33的网卡3.3 修改ens36的网卡3.4 开启PC2网关服务器的路由转发功能3.5 永久开启3.6 配置…

【Midjourney】Midjourney 辅助工具 ② ( 自定义命令工具 | 设置颜色 | 设置材质 | 设置随机种子 | 设置图片链接 )

文章目录 一、Midjourney Prompt Tool 自定义命令工具1、设置颜色参数2、设置材质参数3、设置随机种子参数4、设置图片链接 Midjourney 提示词命令 可以使用 辅助工具 进行生成 , 辅助工具如下 : Midjourney Prompt Tool 自定义命令工具Midjourney Prompt Generator 命令生成器…

前端开发推荐vscode安装什么插件?

前言 可以参考一下下面我推荐的插件&#xff0c;注意&#xff1a;插件的目的是用于提高开发的效率&#xff0c;节约开发的时间&#xff0c;像类似检查一些bug、拼写错误等这些可以使用插件快速的识别&#xff0c;避免在查找错误上浪费过多的时间&#xff0c;但切记不要过度依赖…

【Python Power BI】零基础也能轻松掌握的学习路线与参考资料

Python和Power BI是现代数据分析和可视化领域中最受欢迎的工具之一&#xff0c;Python是一种高级编程语言&#xff0c;广泛用于数据科学和分析&#xff0c;而Power BI是一种业务智能工具&#xff0c;用于创建交互式大屏幕和实时报表。Python和Power BI的结合使用可以为数据科学…

探索编程的极限:挑战炫技代码

程序员常常被视为具有超强技术能力的人才&#xff0c;而他们手中的代码也往往充满了令普通人惊叹的炫技操作。作为程序员的我&#xff0c;将和大家分享一些炫技的代码写法 一、编程语言介绍 本人主攻Java。下面我将介绍一下Java语言。 Java是一种广泛使用的高级编程语言&…

字符串、字符串列表,倒序生成字典。

带数字的字符串以数字为key倒序生成字典&#xff0c;字符串列表按其元素索引为key倒序生成字典。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简…

什么是护网?护网怎么参加?

一、什么是护网行动&#xff1f; 护网行动是以公安部牵头的&#xff0c;用以评估企事业单位的网络安全的活动。 具体实践中。公安部会组织攻防两方&#xff0c;进攻方会在一个月内对防守方发动网络攻击&#xff0c;检测出防守方&#xff08;企事业单位&#xff09;存在的安全…

叮咚买菜业绩大幅低于预期,2023年前景堪忧

来源l&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 叮咚买菜2023年第一季度业绩低于预期 叮咚买菜&#xff08;DDL&#xff09;于5月12日公布了2023年第一季度财报。 财报显示&#xff0c;叮咚买菜的收入同比下降了-8%&#xff0c;从2022年第一季度的54.44亿元人民币下滑…

Shell基础

目录 第1章 Shell概述 第2章 Shell脚本入门 第3章 变量 3.1 系统预定义变量 3.2 自定义变量 3.3 特殊变量 3.3.1 $n 3.3.2 $# 3.3.3 $*、$ 3.3.4 $&#xff1f; 第4章 运算符 第5章 条件判断 第6章 流程控制&#xff08;重点&#xff09; 6.1 if判断 6.2 case语…

广和通携手有人物联网完成5G SUL辅助上行功能验证

近日&#xff0c;广和通5G模组FM650-CN已在商用网络中实现5G SUL上行能力增强&#xff0c;助力有人物联网工业路由器在仿真网络环境中完成SUL辅助上行功能的验证。本次验证成功&#xff0c;意味着FM650-CN已具备SUL辅助上行商用能力&#xff0c;有利于推动更多5G终端支持SUL特性…

AI工具第三期:本周超16款国内精选AI工具分享!

1. 未来百科 未来百科&#xff0c;是一个知名的AI产品导航网站——为发现全球优质AI工具而生。目前已聚集全球2500优质AI工具产品&#xff0c;旨在帮助用户发现全球最好的AI工具&#xff0c;同时为研发AI垂直应用的创业公司提供展示窗口&#xff0c;迎接未来的AI时代。未来百科…

Netty编解码机制(一)

1.编码和解码基本介绍 1>.编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码; 2>.codec(编解码器)的组成部分有两个: decoder(解码器)和 encoder(编码器).encoder(编码器)负责把业务数据转换成字节码数据,而…

什么是数字化?企业为什么要数字化转型

一、什么是数字化&#xff1f; 什么是数字化&#xff1f;在我理解&#xff0c;数字化是一个基于时代科技发展所产生的概念&#xff0c;首先它是一个工具&#xff0c;在企业的经营发展中将信息技术融入到传统的企业模式中&#xff0c;起到了转型的作用。 其次数字化转型是企业…

从复杂到简单:通用CRM客户管理系统改变企业管理方式

一、概述 CRM客户管理系统是通过对客户生命周期的有效管理&#xff0c;是一种重要的客户管理工具&#xff0c;可以帮助企业更好的了解客户的需求&#xff0c;提升客户满意度&#xff0c;优化销售流程、提高销售业绩等&#xff0c;随着数字经济的不断发展和普及&#xff0c;CRM…

第03章 流程控制语句

流程控制语句是用来控制程序中各语句执行顺序的语句&#xff0c;可以把语句组合成能完成一定功能的小逻辑模块。 程序设计中规定的三种流程结构&#xff0c;即&#xff1a; 顺序结构 程序从上到下逐行地执行&#xff0c;中间没有任何判断和跳转。 分支结构 根据条件&#xff0…

mjpg-streamer实现细节分析

mjpg-streamer实现细节分析 文章目录 mjpg-streamer实现细节分析输入初始化input_initinit_videoIninit_v4l2 启动摄像头输入线程cam_threaduvcGrabcompress_yuyv_to_jpegmemcpy_picture 输出初始化output_init启动摄像头输出线程server_thread设置 SO_REUSEADDR 选项。设置 IP…