小编asd*_*sdf的帖子

C:反向数的和

所以我想解决C或SML中的练习,但我不能想出一个这样做的算法.首先,我将编写练习,然后编写我遇到的问题,这样你就可以帮助我了.

行使

我们将自然数N的反向数定义为自然数Nr,它是通过从第一个非零数字开始从右向左读N来产生的.例如,如果N = 4236则Nr = 6324并且如果N = 5400则Nr = 45.

因此,给定任何自然数G(1≤G≤10^ 100000)在C中编写程序,该程序测试G是否可以通过自然数N和其反向Nr的总和出现.如果有这样的数字,则程序必须返回此N.如果没有,则程序必须返回0.输入数字G将通过仅由1行组成的txt文件给出.

例如,使用C,如果number1.txt包含数字33,那么程序带有指令:

> ./sum_of_reverse number1.txt
Run Code Online (Sandbox Code Playgroud)

可以返回例如12,因为12 + 21 = 33或30因为30 + 3 = 33.如果number1.txt包含数字42,则程序将返回0.

现在在ML中如果number1.txt包含数字33那么程序带有指令:

sum_of_reverse "number1.txt"; 
Run Code Online (Sandbox Code Playgroud)

它将返回:

val it = "12" : string
Run Code Online (Sandbox Code Playgroud)

程序必须在大约10秒内运行,空间限制:256MB

我遇到的问题

  1. 起初我试图找到模式,这个属性存在的数字.我发现像11,22,33,44,888这样的数字或像1001,40004,330033这样的数字可以很容易地写成反向数字的总和.但后来我发现这些数字似乎无穷无尽,因为例如14443 = 7676 + 6767或115950 = 36987 + 78963.

  2. 即使我尝试将所有上述模式都包含在我的算法中,我的程序也不会在10秒内运行非常大的数字,因为我必须找到给定的数字的长度,这需要花费很多时间.

  3. 因为数字将通过txt给出,如果数字为999999位数,我猜我不能将这整数的值传递给变量.与结果相同.我假设你要先将它保存到txt然后打印出来?

所以我假设我应该找到一个从txt中获取一组数字的算法,检查它们的某些内容然后继续下一组数字...?

c algorithm sml

5
推荐指数
1
解决办法
2726
查看次数

标签 统计

algorithm ×1

c ×1

sml ×1