P1037 [NOIP2002 普及组] 产生数

news2024/11/26 0:46:10

题目描述

给出一个整数 �n 和 �k 个变换规则。

规则:

  • 一位数可变换成另一个一位数。
  • 规则的右部不能为零。

例如:�=234,�=2n=234,k=2。有以下两个规则:

  • 2⟶52⟶5。
  • 3⟶63⟶6。

上面的整数 234234 经过变换后可能产生出的整数为(包括原数):

  • 234234。
  • 534534。
  • 264264。
  • 564564。

共 44 种不同的产生数。

现在给出一个整数 �n 和 �k 个规则。求出经过任意次的变换(00 次或多次),能产生出多少个不同整数。

仅要求输出个数。

输入格式

第一行两个整数 �,�n,k,含义如题面所示。

接下来 �k 行,每行两个整数 ��,��xi​,yi​,表示每条规则。

输出格式

共一行,输出能生成的数字个数。

输入输出样例

输入 #1复制

234 2
2 5
3 6

输出 #1复制

4

说明/提示

对于 100%100% 数据,满足 �<1030n<1030,�≤15k≤15。

【题目来源】

NOIP 2002 普及组第三题

正经深搜解法

好的,我们先贴一个题面

P1037 Make Numbers (假装大家已经看完题面了

  • 思路一: 如果考虑如果一个数一个数地记录

    我觉得不行~

证明:显然易见得平凡读者自证不难。

我们注意到

给出一个整数 �(�<1030)n(n<1030) 和 �k 个变换规则 �≤15k≤15。

不好意思,

QAQ好像……有点大,溜了溜了。

  • 思路二: 那么我们考虑一位一位地转化然后再借助乘法原理乘起来

    哦,你可真是个天才。 于是就有了以下代码:

#include<iostream>
using namespace std;
string qwq;
int s[33],num[33],k,nxt[33][16],qaq;
bool vis[10];
long long ans = 1;
void dfs(int x,int y)
//x指上一个到达的数,y指现在的
{
//机房神仙说传一个参数就可以,但宝宝不会QAQ
	if(vis[y])return;//对于环状循环的处理
	vis[x] = 1;//记忆化
	qaq++;
	for(int i = 1;i <= num[y];i++)
		dfs(y,nxt[y][i]);
	vis[x] = 0;//归零
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(NULL),cout.tie(NULL);
   	//看不懂可忽略,就是取消cin&cout前后摇
	cin>>qwq>>k;
	int len = qwq.size();
	for(int i = 0;i < len;i++)
		s[i + 1] = qwq[i] - '0';
	for(int i = 1;i <= k;i++)
	{
		int x,y;
		cin>>x>>y;
		nxt[x][++num[x]] = y;
	}
	for(int i = 1;i <= len;i++)
	{
		qaq = 1;
		for(int j = 1;j <= num[s[i]];j++)
			dfs(s[i],nxt[s[i]][j]);
		ans *= qaq;
	}
	cout<<ans;
}

恭喜你,八十分(别打了

  • 于是我们又一次注意到了:

给出一个整数 �(�<1030)n(n<1030) 和 �k 个变换规则 �≤15k≤15。

完了,不会写高精乘高精,怎么办 来山东蓝翔挖掘机学校

那就高精乘低精呗hhh

AC Code:

#include<bits/stdc++.h>
using namespace std;
string qwq;
int s[33],num[33],k,nxt[33][16],qaq;
//万能头选手注意莫用next当数组名
bool vis[10];
int ans[33];
void dfs(int x,int y)
{
	vis[x] = 1;
	if(vis[y])return;
	qaq++;
	for(int i = 1;i <= num[y];i++)
		dfs(y,nxt[y][i]);
}

void mul(){
	int jw = 0;
	for(int i = 30;i;i--)
	{
		ans[i] = ans[i] * qaq + jw;
		jw = ans[i] / 10;
		ans[i] %= 10;
	}
}//根据原理手写一个就好了

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(NULL),cout.tie(NULL);
	ans[30] = 1;
	cin>>qwq>>k;
	int len = qwq.size();
	for(int i = 0;i < len;i++)
		s[i + 1] = qwq[i] - '0';
	for(int i = 1;i <= k;i++)
	{
		int x,y;
		cin>>x>>y;
		nxt[x][++num[x]] = y;
	}
	for(int i = 1;i <= len;i++)
	{
		qaq = 1;
		for(int j = 1;j <= num[s[i]];j++)
			dfs(s[i],nxt[s[i]][j]);
		memset(vis,0,sizeof(vis));
		mul();
	}
	int l = 0;
	for(;ans[l]==0;l++);//处理前导零
	for(int i = l;i <= 30;i++)
		cout<<ans[i];
	return 0;
}

control,简写为Ctrl,扩写为:

唱,跳,rap,篮球.

您还敢Ctrl+C吗

欢迎批评指正

码字不易,良心小编,留赞再走。QAQ

 

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

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

相关文章

SpringBoot的配置和日志

1.配置文件的作用和意义 配置文件中配置整个项目中所有重要的数据&#xff0c;比如&#xff1a; 1.数据库的连接信息&#xff08;包含用户名和密码的设置&#xff09;&#xff1b; 2.项目的启动端口&#xff1b; 3.第三方系统的调用秘钥等信息&#xff1b; 4.用于发现和定位问…

docker--harbor私有仓库部署与管理

目录 第一章.搭建本地私有仓库 1.1.下载 registry 镜像 1.2.运行 registry 容器 1.3.Docker容器的重启策略如下&#xff1a; 1.4.简单操作 第二章. Harbor 简介 2.1.什么是Harbor 2.2.Harbor的特性 2.3.Harbor的构成 第三章.部署服务 3.1.环境部署 3.2.部署 Docker…

USART串口协议和USART串口外设(USART串口发送串口发送和接收)

1、通信接口 • 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 • 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 异步&#xff1a;需要双方约定一个频率 2、 硬件电路 • 简单双向串口通信有两根通信…

基于springboot和ajax的简单项目 013 ztree插件使用,这是关于修改和新增的

先写写的是menu_list.html文件上的内容。 01.在自动加载函数上写点击事件 $(".input-group-btn").on("click",".btn-delete",doDeleteObject).on("click",".btn-add,.btn-update",doLoadEditUI);02.登录函数&#xff1a; …

30秒预测10天全球天气,上海人工智能实验室发布气象大模型“风乌”效果超DeepMind

4月7日&#xff0c;上海人工智能实验室联合中国科学技术大学、上海交通大学、南京信息工程大学、中国科学院大气物理研究所及上海中心气象台发布全球中期天气预报大模型“风乌”。基于多模态和多任务深度学习方法构建&#xff0c;AI大模型“风乌”首次实现在高分辨率上对核心大…

Speech and Language Processing-导读

朋友们&#xff0c;最近打算做一个大工程&#xff0c;我曾多次提过&#xff0c;chatgpt未来将是一股非常大的信息技术革命&#xff0c;有的人不以为然&#xff0c;或者国内很多企业好像并不是很重视&#xff0c;以我从业多年来的经验&#xff0c;chatgpt与之前的NLP技术有着较为…

【jenkins学习】windows环境下部署与设置中文显示

准备&#xff1a; jenkins安装包&#xff1a; https://www.jenkins.io/zh/download/ Java 17安装包&#xff1a; https://www.oracle.com/java/technologies/downloads/#jdk17-windows 1、jdk安装 不建议放在C盘&#xff0c;自定义一个不含中文的路径&#xff0c;安装即可 配置…

轻松掌握K8S目录持久卷PV/PVC的kubectl操作知识点04

1、介绍 在docker中可以将容器中的目录挂载出来&#xff0c;在k8s中pod可以部署在不同节点&#xff0c;假如该节点的机器宕机了&#xff0c;k8s可能就会将此Pod转移到其他机器&#xff0c;就不是原先的机器了。k8s有自己的一套挂载方案&#xff0c;如下图所示&#xff0c; 原…

Flink通过Maxwell读取mysql的binlog发送到kafka再写入mysql

1.准备环境 JDK1.8 MySQL Zookeeper Kakfa Maxweill IDEA 2.实操 2.1开启mysql的binlog 查看binlog 状态&#xff0c;是否开启 show variables like log_% 如果log_bin显示为ON&#xff0c;则代表已开启。如果是OFF 说明还没开启。 [Linux] 编辑 /etc/my.cnf 文件&…

什么品牌台灯最舒服?推荐最热门的护眼灯品牌排行

台灯是人们生活中用来照明的一个电器&#xff0c;平时阅读跟学习时都会用来照明&#xff0c;补充室内不足的光线。 那么&#xff0c;台灯哪个品牌最舒服&#xff1f;分享几款好用的护眼台灯给大家。 (1) 南卡护眼台灯Pro 南卡是目前国内护眼效果方面做得最棒的一个品牌&#x…

企业本地文档如何实现规范在线管理?

随着企业数字化生产方式的不断推进&#xff0c;网络办公和在线协作越来越普遍&#xff0c;企业内部可能出现大量的文件和文档&#xff0c;这些文档多存在于不同的设备和存储介质上&#xff0c;这给企业的信息管理带来了一定程度的困难。为了提高企业的知识管理效率&#xff0c;…

SpringCloudTencent:安装北极星polaris服务

腾讯推出了自己的微服务框架&#xff0c;其中polaris&#xff08;北极星&#xff09;服务更是核心&#xff0c;除了提供服务发现和治理中心&#xff0c;除服务发现、服务注册和健康检查之外&#xff0c;还提供流量控制、故障容错和安全能力。现在我们试着快速安装一下。 1.win…

Java笔记_11(常见算法)

Java笔记_11常见算法 一、常见算法1.1、查找算法1.2、排序算法 二、Arrays三、Lambda表达式四、综合练习4.1、按照要求进行排序4.2、不死神兔4.3、猴子吃桃子4.4、爬楼梯 一、常见算法 1.1、查找算法 基本查找 package Common_algorithms.Basic_Search;import java.util.Ar…

IT运维:服务器管理

服务器是连接到其他设备以提供服务的设备。其他设备称为客户端&#xff0c;此设置称为客户端-服务器模型。 服务器提供的服务包括存储数据、托管网站、运行应用程序、中继信息和执行计算。任何向发出请求的客户端提供服务的设备都可以充当服务器&#xff0c;但大型IT组织通常具…

笔试练习Day01

目录 选择题&#xff1a; 题一&#xff1a; String 类&#xff1a; StringBuffer 类的详解&#xff1a; 关于 Vector 的详解&#xff1a; 编程题&#xff1a; 题一&#xff1a;组队竞赛 题二&#xff1a;删除公共字符串 选择题&#xff1a; 题一&#xff1a; String 类…

node(express框架)连接mysql 基础篇

文章目录 电脑安装mysql配置mysql连接mysql 创建表 创建node文件启动node node 连接数据库连接数据库 电脑安装mysql 由于我的是mac 我就安装mac版本的 mysql 如已安装跳过此步骤 mysql官网选择版本安装配置 这里注意选择下面的 next输入mysql密码 点击finish 配置mysql 打…

ROS:TF变换

一.TF变换数据格式&#xff08;msg&#xff09; TransformStamped.msg&#xff08;两个坐标系之间转换&#xff09; std_msgs/Header header uint32 seq time stamp string frame_id 指明哪一个坐标系&#xff08;父坐标系&#xff09; string child_f…

汇编语言(第3版) - 学习笔记 - 实验8 分析一个奇怪的程序

实验8 分析一个奇怪的程序 题目解析顺序执行查看反汇编测试一下 题目 分析下面的程序&#xff0c;在运行前思考:这个程序可以正确返回吗? 运行后再思考:为什么是这种结果? 通过这个程序加深对相关内容的理解。 assume cs:codesg codesg segmentmov ax, 4c00h int 21h …

BUUCTF pwn1_sctf_2016

小白垃圾笔记而已&#xff0c;不建议阅读。 唉&#xff0c;因为没有在一开始创建flag文件&#xff0c;导致调试了半天也没有找到问题所在。 这道题是这样的&#xff1a; main函数调用vuln函数 其实在程序中还有一个get_flag函数&#xff1a; 我们可以将返回地址覆盖成它。 覆…

E. Number With The Given Amount Of Divisors

传送门 题意&#xff1a;求出整好有n个因子的最小整数。 思路&#xff1a; 要找到恰好有n个因子的最小整数&#xff0c;我们可以利用质因数分解的思想来求解。设该整数的质因数分解式为&#xff1a;其中p1,p2,...,pn均为不同的质数&#xff0c;a1,a2,...,an均为正整数。则该整…