运行超时咋办啊
代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include
int main()
{
int n;
scanf("%d",&n);
int i,j,s=0,h=0;
for(i=10000;i<=99999;i++)
{
if(i/10000==i%10&&(i/10)%10==(i/1000)%10)
{
for(j=1;j<=5;j++)
{
s=s+i%10;
i=i/10;
}
if(s==n)
{
printf("%d\n",i);
}
}
}
for(i=100000;i<=999999;i++)
{
if(i/100000==i%10&&(i/10000)%10==(i/10)%10&&(i/1000)%10==(i/100)%10)
{
for(j=1;j<=6;j++)
{
h=h+i%10;
i=i/10;
}
if(h==n)
{
printf("%d\n",i);
}
}
}
return 0;
}
修改如下,供参考:
#include <stdio.h>
int is(int x,int n)
{
int t = x, sum = 0, rn = 0;
while (x)
{
sum += x % 10;
rn = rn * 10 + x % 10;
x /= 10;
}
return sum == n && rn == t;
}
int main(void)
{
int n = 0, i;
do
{
scanf("%d", &n);
} while (n < 1 || n > 54);
for (i = 10000; i <= 999999; i++)
{
if (is(i, n))
printf("%d\n", i);
}
return 0;
}
仅供参考!谢谢!
#include <stdio.h>
#include <string.h>
//求一个十进制数的各个位之和
int intsum(int x)
{
int sum = 0;
while (x)
{
sum += x % 10;
x /= 10;
}
return sum;
}
//判断回文数
int is(int x)
{
char s[7];
sprintf(s, "%d", x);
char *p2 = &s[strlen(s) - 1];
char *p1 = s;
while (p2 > p1)
{
if (*p1 != *p2)
return 0;
p2--;
p1++;
}
return 1;
}
int main(void)
{
int n = 0;
do
{
scanf("%d", &n);
} while (n < 1 || n > 54);
for (int i = 10000; i <= 999999; i++)
{
if (intsum(i) == n && is(i))
{
printf("%d\n", i);
}
}
return 0;
}