解题思路:
floyed算法
注意事项:
参考代码:
import java.text.NumberFormat;
import java.util.Scanner;
public class llq1 {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int ori_number = 0;//需要改变的数字
int chan_number = 0;//改变后的数字
String number = null;//原始数据
int t;
int can[][] = new int[10][10];//创建图
number = input.next();
t = input.nextInt();
while (t--!=0){
ori_number = input.nextInt();
chan_number = input.nextInt();
can[ori_number][chan_number] = 1; //初始化有向图
}
for (int k = 0; k < 10; k++)
for (int j = 0; j < 10; j++)
for (int i = 0; i < 10; i++)
if (i != j && j != k && i != k)
if (can[i][k] == 1 && can[k][j] == 1)//创建新的变换规则
can[i][j] = 1;
double sum = 1;
for (int i = 0; i < number.length(); i++){
int n1 = number.charAt(i) - '0';
int change = 1;
for (int j = 0; j < 10; j++)//计算每一个变换数字的变换规则个数
if (can[n1][j] == 1 && n1 != j)
change++;
sum *= change;//总的变换次数
}
NumberFormat nf = NumberFormat.getInstance();//格式化输出,非科学技术表示
nf.setMaximumFractionDigits(20);
nf.setGroupingUsed(false);
System.out.print(nf.format(sum));
}
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复