问题描述
小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 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;
}
}