题目描述
在蓝桥电子工坊,工程师小蓝正在设计一款智能脉冲生成器,用于驱动一种新型设备。该设备的运行依赖于特定的脉冲强度,用正整数 p 表示,其必须满足以下三个条件:
- 可由连续 10 个正整数之和组成:即存在一个正整数 k,使得脉冲强度 p=k+(k+1)+(k+2)+⋯+(k+9)。
- 各个数位上的数字都相同:例如 1111、22222、333333 等。
- 数值不超过 20255202:即 1≤p≤20255202。
通过计算所有符合条件的脉冲强度之和,小蓝能够优化设备运行模式。对此,请帮助他计算这一总和。
输入格式
无
输出格式
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只需要编写一个程序输出这个整数,输出多余的内容将无法得分。
输入输出样例
无
#include <bits/stdc++.h>
using namespace std;
const int N = 501;
int A[N][N],s[N][N];
bool jd1(int x)
{
string s;
s=to_string(x);//将整数转换成字符串 便于处理
for(int i=0;i<s.size()-1;i++)
{
if(s[i]!=s[i+1])//只要有相邻两位不同就返回fasle
{
return false;
}
}
return true;//符合条件
}
bool jd2(int x)
{
int t=0;
for(int i=1;i<=9;i++)//哈哈 求和 这一步多余
{
t+=i;
}
int y=x-t;
if(y%10==0&&y>0)//最后相加的那个数一定是10K 所以一定能被10整除并且大于零(条件)
{
return true;
}
return false;
}
int main() {
long long sum=0;
for(int i=1;i<=20255202;i++)
{
if(!jd1(i))
{
continue;//判断条件一:这个数所有位都相同
}
if(!jd2(i))//判断条件二:P=10K+45
{
continue;
}
sum+=i;//都符合条件 求和
}
cout<<6172830;
return 0;
}
/*补充:其实看到最后P=10K+45 所以符合条件的一定是5的倍数 所以答案就只有55 555 ... 5555555 相加即可