XDOJ-拼数字
标题
拼数字
时间限制
1S
内存限制
1000Kb
问题描述
对于给定的字符序列(字符序列长度小于100),从左至右将所有数字字符取出拼接成一个无符号整数(拼接出的整数小于2^31)。
然后计算并输出该整数的最大因子(如果是素数或0,则其最大因子为自身)。
输入说明
输入数据为一行字符序列。
输出说明
对输入的字符序列,求出所得整数的最大因子;若字符序列中没有数字或找出的整数为0,则输出0。
输入样例
样例1输入
sdf0ejg3.f?9f
样例2输入
?4afd0s&2d79*(g
样例3输入
abcde
输出样例
样例1输出
13
样例2输出
857
样例3输出
0
#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
char a[101],b[12];
gets(a);
char* p = a;
int n = strlen(a),t=0,sum=0,i,result,m;
char* p_end = a + n - 1;
for (; p <= p_end; p++)
{
if (*p >= '0' && *p <= '9')
{
b[t] = *p;
t++;
}
}
result = t;
for (i = 0; i < t; i++,result--)
{
sum += (b[i]-'0') * pow(10, result-1);
}
for (i = 2; i * i <= sum; i++)
{
if (sum % i == 0)
{
m = sum / i;
break;
}
}
if (t == 0 || sum == 0)
{
cout << 0;
}
else
{
if (i * i > sum)
{
cout << sum;
}
else
cout << m;
}
return 0;
}
此题代码足够清晰,无注释,下方也不再赘述
ps:如有错误敬请指正,如有问题欢迎评论区讨论或私信
邮箱:1654407501@qq.com如果对你有用的话,请点赞并关注,近期不定时更新新内容