蓝桥杯-算法提高-产生数-字符串+运算

本文介绍了蓝桥杯算法比赛中关于整数n(n<10^30)及其k个变换规则的题目。题目要求计算经过变换后能产生多少个不同的整数。解题思路涉及使用字符串表示数字,通过二维数组记录数字转换关系,并计算转换后的整数个数。给出的样例输入和输出展示了具体的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蓝桥杯-算法提高-产生数-字符串+运算

给出一个整数n ( n<10^30) 和k个变换规则(k<=15)。
规则:
  (1)1位数可变换成另一个一位数;
  (2)规则的右部不能为0。
例如:n=234,有规则(k=2):
  2 → 5
  3 → 6
上面的整数234经过变换后可能产生出的整数为(包括原数):
  234
  534
  264
  564
  共4 种不同的产生数
  求经过任意次的变换(0次或多次),能产生出多少个不同的整数。仅要求输出不同整数个数。

  • 输入格式
      n
      k
      x1 y1
      x2 y2
      … …
      xn yn
  • 输出格式
      格式为一个整数(满足条件的整数个数)。
  • 样例输入
    234
    2
    2 5
    3 6
  • 样例输出
    4
  • 解题思路:
    ①整数n<10^30,整数比较大,用字符串来表示数字;
string n;

②定义一个二维数组标记两个数字i和j是否可以转换;

int flag[10][10]={
   0};

③每一位的转换数字的个数连乘的结果即为可转换整数的个数。

long long sum=1;//整数个数,初始值=1! 
...
sum*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值