小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如
2314.2314 是一个幸运数字.现在请你帮他计算从 1 至 100000000之间共有多少个不同的幸运数字。
代码超时了,怎么才能优化一下呢?
#include<stdio.h>
#include<stdbool.h>
bool isequal(int x) //判断x的前半位数和与后半位数和是否相同
{
int temp,count[10],n=0,sum=0,i,h=0; //n表示位数
while(x)
{
temp=x%10;
x=x/10;
count[n++]=temp;
sum+=temp;
}
for(i=0;i<n/2;i++)
h+=count[i];
if(sum%2==0&&h==sum/2)
return true;
else
return false;
}
int main()
{
int count=0,i;
for(i=10;i<100;i++)
if(isequal(i))
count++;
for(i=1000;i<10000;i++)
if(isequal(i))
count++;
for(i=100000;i<1000000;i++)
if(isequal(i))
count++;
for(i=10000000;i<100000000;i++)
if(isequal(i))
count++;
printf("%d",count);
return 0;
}