(提交上去总说我超时,求大佬帮帮我!!!解决了有重筹)
题目:
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
我的答案:
#include<stdio.h>
int huiwen(int n)
{
int x, s = 0;
x = n;
while (1)
{
s = s * 10 + x % 10;
x = x / 10;
if (s == n)
{
return 1;
break;
}
}
}
int main()
{
int sum, i;
scanf("%d", &sum);
for (i = 10000; i < 1000000; i++)
{
if (huiwen(i) == 1)
{
if ((i % 10 * 2 + i / 10 % 10 * 2 + i / 100 % 10) == sum)
printf("%d", i);
else if ((i % 10 * 2 + i / 10 % 10 * 2 + i / 100 % 10) == sum)
printf("%d", i);
else
printf("-1");
}
}
}
你题目的解答代码如下:
#include <stdio.h>
int huiwen(int n,int m)
{
int x, s = 0, t=0;
x = n;
while (x>0)
{
t = t + x % 10;
s = s * 10 + x % 10;
x = x / 10;
}
if (s == n && t==m)
return 1;
else
return 0;
}
int main()
{
int sum, i,cou = 0;
scanf("%d", &sum);
for (i = 10000; i < 1000000; i++)
{
if (huiwen(i,sum) == 1)
{
printf("%d\n", i);
cou++;
}
}
if (cou==0)
printf("-1");
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
首先子函数里的if没有设置return 0,加个else就好。
其次主函数的else if的验证表达式最后一项少乘2
还有应该设置个计数变量,如果回文数计数为0,才输出-1