本文最后更新于 207 天前,其中的信息可能已经有所发展或是发生改变。
问题描述
小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 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; }