蓝桥杯官网练习题(幸运数字)
问题描述
小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 是一个幸运数字, 因为它有 4 个数位, 并且 2+3=1+4 。现在请你帮他计算从 1 至 100000000 之间共有多少个不同的幸运数字。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
运行限制
语言 | 最大运行时间 | 最大运行内存 |
---|---|---|
C++ | 1s | 256M |
C | 1s | 256M |
Java | 2s | 256M |
Python3 | 3s | 256M |
PyPy3 | 3s | 256M |
//满足条件的为两位数:10<=i<100,四位数:1000<=i<10000,六位数:100000<=i<1000000,八位数:10000000<=i<100000000
//注意每次循环的小于等于符号
import java.util.Scanner;public class Main {public static void main(String[] args) {int ans=0;for(int i=10;i<100;i++){if(er(i)==1){ans++;}}for(int i=1000;i<10000;i++){if(si(i)==1){ans++;}}for(int i=100000;i<1000000;i++){if(liu(i)==1){ans++;}}for(int i=10000000;i<100000000;i++){if(ba(i)==1){ans++;}}System.out.println(ans);}public static int er(int i){int flag=0;int ge=i/1%10;int shi=i/10%10;if(ge==shi){flag=1;}return flag;}public static int si(int i){int flag=0;int ge=i/1%10;int shi=i/10%10;int bai=i/100%10;int qian=i/1000%10;if(ge+shi==bai+qian){flag=1;}return flag;}public static int liu(int i){int flag=0;int ge=i/1%10;int shi=i/10%10;int bai=i/100%10;int qian=i/1000%10;int wan=i/10000%10;int shiwan=i/100000%10;if(ge+shi+bai==qian+wan+shiwan){flag=1;}return flag;}public static int ba(int i){int flag=0;int ge=i/1%10;int shi=i/10%10;int bai=i/100%10;int qian=i/1000%10;int wan=i/10000%10;int shiwan=i/100000%10;int baiwan=i/1000000%10;int qianwan=i/10000000%10;if(ge+shi+bai+qian==wan+shiwan+baiwan+qianwan){flag=1;}return flag;}
}