- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以你从四个变量开始。
Variable A = Any #;
Variable B = Any #;
Variable C = 1;
Variable D = 1;
变量 C 和 D 始终等于 1。
问题:
当变量 C 可能将其自身添加到 D 计数并且变量 D 可能将其自身添加到 C 计数时,C 和 D 需要多少次添加才能与变量 A 和 D 相关。
例如
Variable A = 4;
Variable B = 7;
Output -> 4
这是因为模式 (C=1, D=1):
C+=D C+=D D+=C D+=C / Equations
C=2 D=1 (1) C=3 D=1 (2) C=3 D=4 (3) C=3 D=7 (4) / Output (4 in total)
如何获得进一步的结果?
好吧,我想出了一个方法,你可以向后推算出需要添加的总数量。
count = 0;
if(A == B)
{
"return impossible";
}
else if (A > B)
{
A = A - B;
count++;
}
else if (B > A)
{
B = B - A;
count++;
}
<强>???令人费解的问题???
这对于较小的数字非常有效,但问题是程序必须能够处理高达 10^50 次方的数字。我的所有变量都存储在 BigInteger 变量中,并且我已经完成了 4/5 的测试用例。最后一个测试用例由于运行时错误而失败。测试用例未知,但我有预感它是 10^50。我的问题是是否有任何方法可以优化解决方案以更快地接收加法次数,或者也许有另一种方法可以用方程解决问题?提前致谢!
为了进一步调试上述伪代码(我的代码):
public static void main (String[] args) {
System.out.println(answer("5000000000000000000000000000000000000000", "5")); //vA big number and a small number
}
public static String answer(String M, String F)
{
String str = testPossibilities(M, F);
return str;
}
public static String testPossibilities(String M, String F)
{
BigInteger nM = new BigInteger(M);
BigInteger nF = new BigInteger(F);
BigInteger inc = new BigInteger("1");
BigInteger count = new BigInteger("0");
while (BigInteger.valueOf(1).compareTo(nM) == -1 || BigInteger.valueOf(1).compareTo(nF) == -1)
{
BigInteger offset = new BigInteger("" + (nM.divide(new BigInteger("2"))));
System.out.print(nM + " " + nF + "\n"); // Print results
if(nM.compareTo(nF) == 0 || BigInteger.valueOf(1).compareTo(nM) == 1 || BigInteger.valueOf(1).compareTo(nF) == 1) // If equal then not possible
{
return "impossible";
}
else if(nM.compareTo(nF) == 1)
{
if(nM.compareTo(nF.multiply(offset)) == 1)
{
nM = nM.subtract(nF.multiply(offset));
count = count.add(nF.multiply(offset));
}
else
{
nM = nM.subtract(nF);
count = count.add(inc);
}
}
else if(nF.compareTo(nM) == 1)
{
nF = nF.subtract(nM);
count = count.add(inc);
}
}
if (BigInteger.valueOf(1).compareTo(nM) == 0 && BigInteger.valueOf(1).compareTo(nF) == 0) //If everything went ok then return the number
{
return "" + count;
}
return "impossible";
}
最佳答案
我研究了一种更快的算法,计算(5000000000000000000000000000000000000000,5)
需要将近一秒钟,并且它基于mod
:
( A != B ) && ( A != 0 ) && ( B != 0 )
期间保持计算。然后,迭代之后我们可以分析结果:
public static String answer( String M, String F )
{
BigInteger nM = new BigInteger(M);
BigInteger nF = new BigInteger(F);
long count = 0;
while ( !nM.equals ( nF ) && !nM.equals ( new BigInteger ( "0" ) ) && !nF.equals ( new BigInteger ( "0" ) ) )
{
BigInteger divide = (nF.max ( nM )).divide ( nF.min ( nM ) );
count += divide.compareTo ( new BigInteger ( "0" ) ) == 1 ? divide.longValue ( ) : 1;
BigInteger originalNM = nM;
BigInteger originalNF = nF;
nM = originalNM.mod ( originalNF );
nF = originalNF.mod ( originalNM );
System.out.println(nM + " " + nF + " " + count); // Print results
}
if (nM.intValue ( ) == 0 && nF.intValue ( ) != 1) return "impossible " + (count-1);
if (nM.intValue ( ) != 1 && nF.intValue ( ) == 0) return "impossible " + (count-1);
return "" + (count-1);
}
Input:
( "5000000000000000000000000000000000000000" , "5" )
Output:
0 5 6873995514006732800
impossible 6873995514006732799
Input:
( "123123123" , "43" )
Output:
19 43 2863328
19 5 2863330
4 5 2863333
4 1 2863334
0 1 2863338
2863337
Input:
( "4" , "7" )
Output:
4 3 1
1 3 2
1 0 5
4
注意:此算法一直到 0,因此正确的count
将为count-1
。
关于java - 一个编号变量生成另一个编号变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41371731/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!