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

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.xdnf.cn/news/17403.html

相关文章:

  • 【论坛系统自动化功能测试报告】
  • 【深度学习机器学习】构建情绪对话模型:从数据到部署的完整实践
  • 如何使用 pnpm创建Vue 3 项目
  • 神策埋点是什么
  • 7. 什么是事件委托
  • 数据结构学习之二叉树
  • 【Java】Predicate使用案例
  • 制造业中小企业数字化转型“三步走”:业务系统稳健筑基,BI赋能智慧决策
  • 分布式面经
  • 分布式事务与分布式锁
  • STM32 串口控制电机运行系统
  • 深度学习中主要库的使用:(一)pandas,读取 excel 文件,支持主流的 .xlsx/.xls 格式
  • 【Zephyr】02_从零教你开发芯片级ADC驱动(HAL层篇)
  • IIS7.5下的https无法绑定主机头,显示灰色如何处理?
  • 基于 MATLAB 的 QPSK 调制、解调、通过高斯信道的误码率计算,并绘制误码率图和眼图、星座图
  • Numpy科学计算与数据分析:Numpy数学函数入门与实践
  • web前端结合Microsoft Office Online 在线预览,vue实现(PPT、Word、Excel、PDF等)
  • nlp-句法分析
  • 从配置到远程访问:如何用群晖NAS FTP+ Cpolar搭建稳定文件传输通道
  • 云平台运维工具 ——AWS 原生工具
  • 利用DeepSeek用两种方法编写go语言zstd实用程序
  • 软件加密工具-DSProtector使用说明
  • 关键字 - 第二讲
  • SpringBoot的优缺点
  • DNS查询过程?CDN是什么,有什么作用?
  • 嵌入式系统学习Day14(C语言中指针的拓展)
  • 音乐创作新潮流!豆包 + 蘑兔 A
  • macOS 彻底卸载 Python 的完整指南
  • RWA项目实战指南:流程设计到技术落地的完整路径
  • 硬件学习笔记--74 电泳与电镀的对比介绍