本文最后更新于 193 天前,其中的信息可能已经有所发展或是发生改变。
问题描述
小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 23142314 是一个幸运数字, 因为它有 44 个数位, 并且 2+3=1+42+3=1+4 。现在请你帮他计算从 11 至 100000000100000000 之间共有多少个不同的幸运数字。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
运行限制
语言 | 最大运行时间 | 最大运行内存 |
---|---|---|
C++ | 1s | 256M |
C | 1s | 256M |
Java | 2s | 256M |
Python3 | 3s | 256M |
答案:
#include <stdio.h>
int a[5][50]={0};//定义数组a[i][j] 表示i位数和为j,j最大为9*i;
int count=0;
void num(int x){int t=0,sum=0;//判断位数
while(x){sum+=x%10;
x/=10;t++;
}a[t][sum]++;
}
int main(){
for(int i=1;i<=9999;i++){
num(i);
}
for(int i=1;i<=4;i++){//左一半,1-4
for(int j=1;j<=i*9;j++){
for(int k=1;k<=i;k++){//右一半只要比i小前面补0
count+=a[i][j]*a[k][j];
}
}
}printf("%d",count);
return 0;
}