原题链接:蓝桥杯算法提高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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复