原题链接:蓝桥杯算法提高VIP-寻找三位数
解题思路:这个题,主要是理解意思,分为二步来做,第一步:判断数是1:2:3的比例;
第二步:判断数是123456789组成,但是不能有重复值;
注意事项:
参考代码:
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//利用for循环来让每一个三位数都来比较一次,当然了通过一个写好的得知,最低也是192,所以从192开始遍历,末尾也是981;
for (int i = 192; i <= 981; i++) {
//声明变量
int a=0;
int b=1;
//题目给的1: 2:3的关系
int i2=i*2;
int i3=i*3;
//将他们转化为字符串形式
String string=String.valueOf(i)+String.valueOf(i2)+String.valueOf(i3);
//看string。lenght有又没有9位数因为是123456789这几个数字拆分组合的
if(string.length()==9){
//把string的值拆分,然后相加,因为1+2+3+4+5+6+7+8+9=45的所以要利用CharAt()方法,
//而CharAt()方法必须要for循环来控制下表
for (int j = 0; j < string.length(); j++) {
//利用1+2+3+4+5+6+7+8+9=45来判断是不是123456789分解出来的数
a+=Integer.parseInt(String.valueOf(string.charAt(j)));
//把1*2*3*4*5*6*7*8*9=362880
b*=Integer.parseInt(String.valueOf(string.charAt(j)));
}
//通过上面那二个就可以判断是不是123456789分解出来的数,如果是就输出,不是就跳过
if(a==45 && b==362880){
System.out.println(i+" "+i2+" "+i3);
}
}
}
}
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复