zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法提高 产生数

    算法提高 产生数
    时间限制:1.0s 内存限制:256.0MB

    问题描述

    给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15)。

    规则:

    一位数可变换成另一个一位数:

    规则的右部不能为零。

    例如:n=234。有规则(k=2):

    2-> 5

    3-> 6

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

    234

    534

    264

    564

    共 4 种不同的产生数

    问题:

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

    求出:

    经过任意次的变换(0次或多次),能产生出多少个不同整数。

    仅要求输出个数。
      输入格式:
      n k
      x1 y1
      x2 y2
      … …
      xn yn
      输出格式:
      一个整数(满足条件的个数):
    样例输入
    234 2
    2 5
    3 6
    样例输出
    4

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.math.BigInteger;
    import java.util.Vector;
    
    
    public class 产生数 {
    	static int[] v=new int[10];
    	static Vector<Vector<Integer>> gz=new Vector<Vector<Integer>>();
    	static int geti(int i){
    		int a=1;
    		v[i]=1;
    		for (int j = 0; j <gz.get(i).size(); j++) {
    			int k=gz.get(i).get(j);
    			if(v[k]==1)continue;
    			a+=geti(k);
    		}
    		return a;
    	}
    	public static void main(String[] args) throws IOException {
    		for (int i = 0; i <10; i++) {
    			gz.add(new Vector<Integer>());
    		}
    		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
    		String[] a1=bf.readLine().split(" ");
    		int k=Integer.parseInt(a1[1]);
    		int[] s=new int[a1[0].length()];
    		for (int i = 0; i < a1[0].length(); i++) 
    			s[i]=a1[0].charAt(i)-'0';
    		for (int i = 0; i < k; i++) {
    			a1=bf.readLine().split(" ");
    			gz.get(Integer.parseInt(a1[0])).add(Integer.parseInt(a1[1]));
    		}
    		BigInteger num=new BigInteger("1");
    		for (int i = 0; i < s.length; i++) {
    			num=num.multiply(BigInteger.valueOf(geti(s[i])));
    			v=new int[10];
    		}
    		//System.out.println(BigInteger.valueOf(2).pow(20));
    		System.out.println(num);
    	}
    
    }
    
    
  • 相关阅读:
    day09
    初识socket
    java正则表达式
    Servlet 3.0 新特性详解
    spring利用PropertiesFactoryBean管理属性配置文件properties
    MyBatis获取插入记录的自增主键
    深入学习理解java-ThreadLocal
    Mybatis批量执行语句
    MyBatis使用二级缓存
    编码的理解
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078356.html
Copyright © 2011-2022 走看看