这是一个算法问题.为了简单起见,我说我有两个双打,A和B.我想构建一个函数,它会给我差异,直到A的下一个倍数或B的下一个倍数,如果这有意义的话.
例如,假设A是3而B是5.
考虑倍数:(3,6,9,12,15)和(5,10,15).
我希望函数输出:(3,2,1,3,1,2,3),因为它需要3个单位才能达到3,然后再多达2个到达5,然后是1到6,然后是3到9等...
我希望这是有道理的.理想情况下,它是一个Python-esque生成器(虽然我在Arduino~C++中编写它).我需要快速 - 非常快.
真的很感激任何帮助.我的伪代码在下面,但它不是那么好.
a = 3
b = 5
current = 0
distToA = a
distToB = b
for i in xrange(100):
if distToA > distToB: #B comes first
print "Adding {0}".format(distToB)
current += distToB
distToA -= distToBb
distToB = b
elif distToB > distToA: #A comes first
print "Adding {0}".format(distToA)
current += distToA
distToB -= distToA
distToA = a
else: #Equal
print "Adding {0}".format(distToA)
current += distToA #Arbitrarily, could be distToB
distToA = a …Run Code Online (Sandbox Code Playgroud) 我正在用 C 编写一个文件浏览器,它使用等效的 ls 和 cd 来让用户导航文件系统并选择一个文件。一切正常 - 我可以让用户选择一个struct dirent *代表他们想要选择的文件的目录条目。但是,我想在我的程序中打开这个文件,我知道如何做到这一点的唯一方法是通过fopen(FILE* fptr). 有没有办法可以将 a 转换struct dirent *为 a FILE*?Astruct dirent有一个属性ino_t d_fileno,它指的是“文件序列号” - 与文件描述符相同吗?我可以使用该文件描述符打开一个FILE*?