当前位置: 首页 > news >正文

P1037 [NOIP 2002 普及组] 产生数

P1037 [NOIP 2002 普及组] 产生数

题目描述

给出一个整数 nnnkkk 个变换规则。

规则:

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

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

  • 2⟶52\longrightarrow 525
  • 3⟶63\longrightarrow 636

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

  • 234234234
  • 534534534
  • 264264264
  • 564564564

444 种不同的产生数。

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

仅要求输出个数。

输入格式

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

接下来 kkk 行,每行两个整数 xi,yix_i,y_ixi,yi,表示每条规则。

输出格式

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

输入输出样例 #1

输入 #1

234 2
2 5
3 6

输出 #1

4

说明/提示

对于 100%100\%100% 数据,满足 n<1030n \lt 10^{30}n<1030k≤15k \le 15k15

【题目来源】

NOIP 2002 普及组第三题

对于这题,我们需要考虑每一个数字经过有限次变换可以有多少可能。即其路径上经过了多少个不同的结点。使用floyd-warshall解决这个传递闭包问题。

#include <bits/stdc++.h>
using namespace std;vector<int> mul(const vector<int>& num, int m) {if (m == 0) {return {0};}vector<int> result;int carry = 0;for (int digit : num) {int product = digit * m + carry;result.push_back(product % 10);carry = product / 10;}while (carry > 0) {result.push_back(carry % 10);carry /= 10;}return result;
}int main() {ios_base::sync_with_stdio(false);cin.tie(NULL);string n_str;int k;cin >> n_str >> k;bool g[10][10] = {false};for (int i = 0; i < 10; ++i) {g[i][i] = true;}for (int i = 0; i < k; ++i) {int u, v;cin >> u >> v;g[u][v] = true;}for (int kk = 0; kk < 10; ++kk) {for (int i = 0; i < 10; ++i) {for (int j = 0; j < 10; ++j) {if (g[i][kk] && g[kk][j]) {g[i][j] = true;}}}}int choices[10] = {0};for (int i = 0; i < 10; ++i) {for (int j = 0; j < 10; ++j) {if (g[i][j]) {choices[i]++;}}}vector<int> num = {1};for (char c : n_str) {int digit = c - '0';num = mul(num, choices[digit]);}for (int i = num.size() - 1; i >= 0; --i) {cout << num[i];}cout << endl;return 0;
}
http://www.lryc.cn/news/613556.html

相关文章:

  • NFS 服务器
  • Docker容器强制删除及文件系统修复完整指南
  • mysql的InnoDB索引总结
  • 传统防火墙与下一代防火墙
  • 中介效应分析 原理解释 实例分析
  • python中的集合
  • 移动端录屏需求调研:以小熊录屏为例的轻量级实现方案
  • 线程池创建线程
  • jmeter要如何做接口测试?
  • Jmeter使用第一节-认识面板(Mac版)
  • 【线性代数】5特征值和特征向量
  • Vue3获取当前页面相对路径
  • 站在Vue的角度,对比鸿蒙开发中的状态管理
  • Casrel关系抽取
  • vue3 el-select 加载触发
  • AI绘画:生成唐初李世民全身像提示词
  • 【unity实战】使用Unity程序化生成3D随机地牢(附项目源码)
  • 8.3.1 注册服务中心Etcd
  • 【感知机】感知机(perceptron)学习算法的对偶形式
  • Java包装类详解与应用指南
  • Caffeine 三种过期策略详解
  • Day 6: CNN卷积神经网络 - 计算机视觉的核心引擎
  • MCU中的USB
  • 论文解读:单个标点符号如何欺骗LLM,攻破AI评判系统
  • Linux总线,设备和驱动关系以及匹配机制解析
  • vue打包号的文件如何快速查找文件打包后的位置
  • Redis 编译错误:缺少静态库文件,如何解决?
  • 在NVIDIA Orin上用TensorRT对YOLO12进行多路加速并行推理时内存泄漏 (中)
  • PoE延长器——突破网络距离限制
  • 数据赋能(386)——数据挖掘——迭代过程