小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。请你帮他计算从1 至 100000000 之间共有多少个不同的幸运数字。
那不妨我们分析一下,先把这个转成字符串,能知道有多少位数,然后判断是不是偶数位,是的话再调用函数,函数里面分为两部分,前半部分相加,后半部分相加,如果等于的话,返回true,这个时候计数器加上一个1,一定要注意,只有返回是true才会加1,当然这是纯暴力的解法
#include<iostream>
#include<cstring>
using namespace std;
int ans;
bool fun(int x)
{
int sum1=0,sum2=0;//初始值为0,要在函数里面设置,每个不同的都要重置
string s=to_string(x);
int l=s.size();
for(int i=0;i<l/2;i++)
{
sum1+=s[i]-'0';
sum2+=s[l-i-1]-'0';
}
if(sum1==sum2)
return true;
return false;
}
int main()
{
for(int i=1;i<=;i++)
{
string s=to_string(i);
int n=s.size();
if(n%2==0)
{
if(fun(i));//根据fun函数的返回值来判断数是否是幸运数字
ans++;
}
}
cout<<ans;
}