【算法】模拟,高精度

news2025/2/12 10:41:56

高精度加法

 

P1601 A+B Problem(高精) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路就是模拟,值得注意的就是要用字符串类型输入。存进自己的int数组时要倒着存,因为如果是正着存的话,进位会有点trouble。

时间复杂度O(max(m,n))

#include<bits/stdc++.h>
using namespace std;
const int N=510;
int a[N],b[N],c[N];
signed main()
{
	string A,B;
	cin>>A>>B;
	int len=max(A.length(),B.length());
	for(int i=A.length()-1,j=1;i>=0;i--,j++)
	{
		a[j]=A[i]-'0';//倒着存 
	}
	for(int i=B.length()-1,j=1;i>=0;i--,j++)
	{
		b[j]=B[i]-'0';//倒着存 
	}
	for(int i=1;i<=len;i++)
	{
		c[i]+=a[i]+b[i];
		c[i+1]=c[i]/10;
		c[i]%=10;	
	} 
	if(c[len+1]) len++;
	for(int i=len;i>=1;--i) cout<<c[i];
	return 0;
}

高精度乘法

  

P1303 A*B Problem - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include<bits/stdc++.h>
using namespace std;
const int N=5010;
int a[N],b[N],c[N];
signed main()
{
	string A,B;
	cin>>A>>B;
	int lena=A.length(),lenb=B.length();
	int len=lena+lenb;
	for(int i=lena-1,j=1;i>=0;j++,i--)
	{
		a[j]=A[i]-'0';
	}
	for(int i=lenb-1,j=1;i>=0;j++,i--)
	{
		b[j]=B[i]-'0';
	}
	for(int i=1;i<=lena;i++)
	{
		for(int j=1;j<=lenb;j++)
		{
			c[i+j-1]+=a[i]*b[j];
		}
	}
	for(int i=1;i<=len;i++)
	{
		c[i+1]+=c[i]/10;
		c[i]%=10;
	}
	while(!c[len]) len--;
	for(int i=max(1,len);i>=1;i--) cout<<c[i];
	//注意0,0的情况 ,要输出一个0 
	return 0;
}

模拟习题

阶乘之和

P1009 [NOIP1998 普及组] 阶乘之和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

copy的题解,主要是高精的乘法和加法。要注意细节问题。

#include<bits/stdc++.h>
using namespace std;
signed main()
{
    int n,j,i,A[1005]={0},B[1005]={0};
    cin>>n;
    A[1]=B[1]=1;
    for(i=2;i<=n;i++)
	{
        for(j=1;j<100;j++)
        {
            B[j]*=i;//每一项都乘上i 
        }    
        for(j=1;j<100;j++)//对每一项进行讨论 
        {
            B[j+1]+=B[j]/10;//进位 
            B[j]%=10;
        }    
        for(j=1;j<100;j++)
		{
            A[j]+=B[j];
            A[j+1]+=A[j]/10;
            A[j]%=10;
        }
    }
    for(i=100;i>=0&&A[i]==0;i--);
    for(j=i;j>=1;j--) printf("%d", A[j]);
    return 0;
}

魔法少女小Scarlet

P4924 [1007]魔法少女小Scarlet - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

矩阵顺时针,逆时针旋转。

细节巨多,很恼人的一个题目!!(蒟蒻发言)

主要问题在于矩阵旋转带来的数值改变,要找关系。这里也是看到了题解的一个很聪明的做法,把(x,y)看成坐标原点,再对其讨论。在题解里也看到很多佬写题都是用函数,感觉结构会很清晰,

(太久没写博客了,图片怎么转都没转过来就这样吧,摆烂.jpg) 

这里也要注意,转完之后(j,-i)=原来的(i,j),不要小脑写反了,保持清醒!!

#include<bits/stdc++.h>
using namespace std;
const int N=600;
int n,m;
int g[N][N],t[N][N];

signed main()
{
	cin>>n>>m;
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=n;++j)
		{
			g[i][j]=(i-1)*n+j;
		}
	}
	while(m--)
	{
		int x,y,r,z;//z=0 表示顺时针,z=1 表示逆时针
		cin>>x>>y>>r>>z;
		memset(t,0,sizeof(t));
		for(int i=x-r;i<=x+r;i++)
		{
			for(int j=y-r;j<=y+r;j++)
			{
				t[i][j]=g[i][j];
			}
		} 
		if(z==0)
		{
			for(int i=-r;i<=r;i++)
			{
				for(int j=-r;j<=r;j++)
				{ 	
					g[x+j][y-i]=t[x+i][y+j];
				}
			}
		}
		if(z==1)
		{
			for(int i=-r;i<=r;i++)
			{
				for(int j=-r;j<=r;j++)
				{
					g[x-j][y+i]=t[x+i][y+j];
				}
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cout<<g[i][j]<<" ";
		}
		cout<<endl;
	} 

	return 0;
}

 生活大爆炸版石头剪刀布

(生活大爆炸好耶。高中疫情在家那会可爱边吃饭边看了,偏题bushi)

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 纯打表,有点无脑其实。。。。注意细节就好,没有思维难度。

#include<bits/stdc++.h>
using namespace std;
const int N=600;
int n,na,nb;
int a[N],b[N];
int cnta,cntb;
signed main()
{
	cin>>n>>na>>nb;
	for(int i=0;i<na;i++) cin>>a[i];
	for(int i=0;i<nb;i++) cin>>b[i]; 
	
	for(int i=0;i<n;i++)
	{
		if(a[i%na]==0)
		{
			if(b[i%nb]==2||b[i%nb]==3) cnta++;
			else if(b[i%nb]==0) continue;
			else cntb++;
		}
		if(a[i%na]==1)
		{
			if(b[i%nb]==3||b[i%nb]==0) cnta++;
			else if(b[i%nb]==1) continue;
			else cntb++;
		}
		if(a[i%na]==2)
		{
			if(b[i%nb]==1||b[i%nb]==4) cnta++;
			else if(b[i%nb]==2) continue;
			else cntb++;
		}
		if(a[i%na]==3)
		{
			if(b[i%nb]==4||b[i%nb]==2) cnta++;
			else if(b[i%nb]==3) continue;
			else cntb++;
		}
		if(a[i%na]==4)
		{
			if(b[i%nb]==0||b[i%nb]==1) cnta++;
			else if(b[i%nb]==4) continue;
			else cntb++;
		}
	}
	cout<<cnta<<" "<<cntb;
	return 0;
}

两只塔姆沃斯牛

P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 是一个模拟,没想象中难,自我感觉很对但输出不对看了好久,结果是方向向量有问题。

要注意在这种二维数组里坐标要这样画

#include<bits/stdc++.h>
using namespace std;
const int N=600;
char g[15][15];
int tox[]= {-1, 0, 1, 0};//方向 
int toy[]={0, 1, 0, -1};
typedef pair<int,int> PII;
PII niu,ren; 
signed main()
{//能往前就往前,否则掉头,每分钟动一次 
	memset(g,'*',sizeof(g));
	int n=10;
	
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>g[i][j];
			if(g[i][j]=='C') niu.first=i,niu.second=j;
			if(g[i][j]=='F') ren.first=i,ren.second=j;
		}
	} 
	//牛的路是固定的 	
	int nn=0,nr=0;//记录朝向,初始都为北 
	for(int i=1;i<=100000;i++)//时间,分钟 
	{
		int a=niu.first+tox[nn%4];
		int b=niu.second+toy[nn%4];
		if(g[a][b]=='*'||a<1||a>10||b<1||b>10)
		{
			/*a=niu.first;
			b=niu.second;*///如果前面是障碍物,则不走 
			nn++;
		}else{
			niu.first=a;//可以走,更新点的坐标 
			niu.second=b;
		}
		
		int c=ren.first+tox[nr%4];
		int d=ren.second+toy[nr%4];
		if(g[c][d]=='*'||c<1||c>10||d<1||d>10)
		{
			/*c=ren.first;
			d=ren.second;*///如果前面是障碍物,则不走 
			nr++;
		}else{
			ren.first=c;
			ren.second=d;
		}
		if(niu.first==ren.first&&niu.second==ren.second)
		{
			cout<<i;
			return 0;
		}
	}
	cout<<"0";
	return 0;
}

多项式输出

P126开始

P1067 [NOIP2009 普及组] 多项式输出 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

字符串的展开

P1098 [NOIP2007 提高组] 字符串的展开 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

作业调度方案

P1065 [NOIP2006 提高组] 作业调度方案 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

帮贡排序

P1786 帮贡排序 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

阶乘数码

P1591 阶乘数码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

 最大乘积

P1249 最大乘积 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

 麦森数

P1045 [NOIP2003 普及组] 麦森数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spread.NET v16.0.20222.0 ASP.NET cRACK

关于 Spread.NET 提供类似 Excel 的电子表格体验。 Spread.NET 可帮助您创建电子表格、网格、仪表板和表单。它包括一个强大的计算引擎&#xff0c;具有450 函数以及导入和导出Excel电子表格的能力。利用广泛的 .NET 电子表格 API 和强大的计算引擎来创建分析、预算、仪表板、…

【C++ 基础篇:24】:【重要模板】C++ 输入输出运算符重载【以 Date 日期类为例】

系列文章说明 本系列 C 相关文章 仅为笔者学习笔记记录&#xff0c;用自己的理解记录学习&#xff01;C 学习系列将分为三个阶段&#xff1a;基础篇、STL 篇、高阶数据结构与算法篇&#xff0c;相关重点内容如下&#xff1a; 基础篇&#xff1a;类与对象&#xff08;涉及C的三大…

Mysql Access denied for user ‘root‘@ ‘*.*.*.*‘ (using password: YES)异常处理

目录 一、异常错误二、原因三、解决方法 一、异常错误 PS C:\Users\10568> mysql -u root -p Enter password: **** ERROR 1045 (28000): Access denied for user rootlocalhost (using password: YES)Access denied表示拒绝访问&#xff0c;using password&#xff1a;NO/…

计算机视觉 | 语义分割与Segmentation

前 言 「MMSegmentation」 是一个基于 PyTorch 的语义分割开源工具箱。它是 OpenMMLab 项目的一部分。 MMSegmentation v1.x 在 0.x 版本的基础上有了显著的提升&#xff0c;提供了更加灵活和功能丰富的体验。 主要特性 统一的基准平台 我们将各种各样的语义分割算法集成到了…

Linux权限维持

SSH后门&VIM后门 ssh后门&#xff1a; 创建一个软链接&#xff1a; ln -sf /usr/sbin/sshd /tmp/su 拓展&#xff1a;软链接相当于一个快捷键&#xff0c;硬链接相当于一个指针指向文件地址&#xff0c;也类似于复制 开启后门&#xff1a; /tmp/su -oport12345 开启后…

chatgpt赋能python:Python另存为:如何保存你的程序代码

Python另存为&#xff1a;如何保存你的程序代码 简介 Python是一种高级编程语言&#xff0c;最初由Guido van Rossum于1991年创建。自创建以来&#xff0c;Python已被广泛应用于Web开发、数据分析、人工智能等领域。作为一名有10年Python编程经验的工程师&#xff0c;我发现在…

万物的算法日记|第一天

笔者自述&#xff1a; 一直有一个声音也一直能听到身边的大佬经常说&#xff0c;要把算法学习搞好&#xff0c;一定要重视平时的算法学习&#xff0c;虽然每天也在学算法&#xff0c;但是感觉自己一直在假装努力表面功夫骗了自己&#xff0c;没有规划好自己的算法学习和总结&am…

内部服务器端口映射实验:打通内外网络,实现公网访问内部服务

内部服务器端口映射实验&#xff1a;打通内外网络&#xff0c;实现公网访问内部服务 【实验目的】 部署服务器地址转换。熟悉服务器地址转换的应用方法。验证配置。 【实验拓扑】 实验拓扑如图所示。 实验拓扑 设备参数如表所示。 设备参数表 设备 接口 IP地址 子网掩…

BOM,什么是BOM?

4.BOM 4.1 什么是BOM? BOM&#xff08;Browser Object Model&#xff09;即浏览器对象模型&#xff0c;它提供了独立于内容而与浏览器窗口进行交互的对象&#xff0c;其核心对象是 window。 ​ BOM 由一系列相关的对象构成&#xff0c;并且每个对象都提供了很多方法与属性。 …

react---todoList案例

todoList案例效果图 1.组件拆分 2.操作state数据 state 放在哪个组件&#xff1a; 如果某个组件组件使用: 放在其自身的state中。如果某些组件使用&#xff1a;放在他们共同的父组件state中&#xff08;官方称此操作为状态提升&#xff09; 状态&#xff08;state&#xff09;在…

Cocos creator实现飞机大战空中大战《战击长空》小游戏资源及代码

Cocos creator实现飞机大战空中大战《战击长空》小游戏资源及代码 最近在学习Cocos Creator&#xff0c;作为新手&#xff0c;刚刚开始学习Cocos Creator&#xff0c;刚刚入门&#xff0c;这里记录一下飞机大战小游戏实现。 https://wxaurl.cn/VEgRy2eTMyi 一 安装CocosDashBo…

Netty实战(十四)

WebSocket协议&#xff08;二&#xff09; 一、初始化 ChannelPipeline二、引导三、加密 一、初始化 ChannelPipeline 我们之前说过为了将 ChannelHandler 安装到 ChannelPipeline 中&#xff0c;需要扩展了ChannelInitializer&#xff0c;并实现 initChannel()方法。 下面我…

Nacos架构与原理 - 注册中心的设计原理

文章目录 Pre服务的分级模型 &#xff08;服务-集群-实例三层模型&#xff09;数据⼀致性负载均衡服务端侧负载均衡客户端侧负载均衡 健康检查性能与容量易用性集群扩展性用户扩展性 Pre 目前的网络架构是每个主机都有⼀个独立的 IP 地址&#xff0c;那么服务发现基本上都是通…

行为型设计模式07-命令模式

&#x1f9d1;‍&#x1f4bb;作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 命令模式 1、命令模式介绍 命令模式&#xff08;Command&#xff09;&#xff0c;将一个请求封装为一…

【Linux后端服务器开发】常用开发工具

目录 一、apt / yum 二、gcc / g 三、make / makefile 四、vi / vim 五、gdb 一、apt / yum apt 和 yum 都是在Linux环境下的软件包管理器&#xff0c;负责软件的查找、安装、更新与卸载。 apt 是Ubuntu系统的包管理器&#xff0c;yum是Centos系统的包管理器&#xff0c…

SQL回顾总结,超级全

SELECT&#xff1a;语句用于从数据库中选取数据 从 "Websites" 表中选取 "name" 和 "country" 列 SELECT name,country FROM Websites 从 "Websites" 表中选取所有列 SELECT * FROM Websites; SELECT DISTINCT&#xff1a;用于返…

Android系统视角下对APK的分析(2)- APK安装过程的定性分析

声明 以Android手机用户角度来看&#xff0c;安装各式各样的APP&#xff0c;基本就是从应用市场上 “搜索->下载->安装” 三连。而对Android系统来说&#xff0c;这就是个大工程了&#xff0c;因为对Android系统来说APK是“外来户”&#xff0c;如何安装它、有限制地支持…

linux实验三 vi编辑器及用户管理

1、vi编辑器的详细使用 &#xff08;1&#xff09;在用户主目录下建一个名为vi的目录。 &#xff08;2&#xff09;进入vi目录。 &#xff08;3&#xff09;将文件/etc/man_db.conf复制到当前目录下&#xff0c;并用命令sudo修改man_db.conf的属性为所有用户可以读写。 &am…

.net版本下载

1先登录微软 Microsoft - 云、计算机、应用和游戏 下载 .NET Framework | 免费官方下载

【Oauth2请求不带client_id,获取方法】

文章目录 前言一、关键&#xff1a;请求头 Basic xxx:xxx二、源码分析BasicAuthenticationFilter 类extractAndDecodeHeader 方法authenticate方法loadUserByUsername 方法 总结 前言 这段时间在学习 oauth2, 发现我组用的框架&#xff0c;登录请求参数中并没有 client_id &a…