当前位置: 首页 > 知识库问答 >
问题:

我对欧拉#8项目有错误的答案

公冶浩慨
2023-03-14

我不知道为什么错了这个问题。我搜索谷歌,虽然我听不懂。谢谢你帮助:)。问题是=

1000 位数字中乘积最大的四个相邻数字是 9 × 9 × 8 × 9 = 5832。

73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 70172427121883998797908792274921901699720888093776 65727333001053367881220235421809751254540594752243 52584907711670556013604839586446706324415722155397 53697817977846174064955149290862569321978468622482 83972241375657056057490261407972968652414535100474 82166370484403199890008895243450658541227588666881 16427171479924442928230863465674813919123162824586 17866458359124566529476545682848912883142607690042 24219022671055626321111109370544217506941658960408 07198403850962455444362981230987879927244284909188 84580156166097919133875499200524063689912560717606 05886116467109405077541002256983155200055935729725 71636269561882670428252483600823257530420752963450

在 1000 位数字中查找具有最大乘积的 13 个相邻数字。这个产品的价值是什么?

public static void main(String[] args) 
{
    String str= "73167176531330624919225119674426574742355349194934"+
                "96983520312774506326239578318016984801869478851843"+
                "85861560789112949495459501737958331952853208805511"+
                "12540698747158523863050715693290963295227443043557"+
                "66896648950445244523161731856403098711121722383113"+
                "62229893423380308135336276614282806444486645238749"+
                "30358907296290491560440772390713810515859307960866"+
                "70172427121883998797908792274921901699720888093776"+
                "65727333001053367881220235421809751254540594752243"+
                "52584907711670556013604839586446706324415722155397"+
                "53697817977846174064955149290862569321978468622482"+
                "83972241375657056057490261407972968652414535100474"+
                "82166370484403199890008895243450658541227588666881"+
                "16427171479924442928230863465674813919123162824586"+
                "17866458359124566529476545682848912883142607690042"+
                "24219022671055626321111109370544217506941658960408"+
                "07198403850962455444362981230987879927244284909188"+
                "84580156166097919133875499200524063689912560717606"+
                "05886116467109405077541002256983155200055935729725"+
                "71636269561882670428252483600823257530420752963450";
    char chr[] = new char[str.length()];
    chr=str.toCharArray();
    long bignumber=0;
    for (int i = 0; i < chr.length; i++) 
    {
        if(i<=986)
        {
            if(chr[i+0]*chr[i+1]*chr[i+2]*chr[i+3]*chr[i+4]*chr[i+5]*chr[i+6]*chr[i+7]*chr[i+8]*chr[i+9]*chr[i+10]*chr[i+11]*chr[i+12]>bignumber)
            {
                bignumber=chr[i+0]*chr[i+1]*chr[i+2]*chr[i+3]*chr[i+4]*chr[i+5]*chr[i+6]*chr[i+7]*chr[i+8]*chr[i+9]*chr[i+10]*chr[i+11]*chr[i+12];
            }
        }
    }
    System.out.println(bignumber);
}

共有2个答案

穆浩皛
2023-03-14

产品23514624000。
顺序5576689664895。 代码是 -

public class Test{

     public static void main(String []args){
        String str= "73167176531330624919225119674426574742355349194934"+
                "96983520312774506326239578318016984801869478851843"+
                "85861560789112949495459501737958331952853208805511"+
                "12540698747158523863050715693290963295227443043557"+
                "66896648950445244523161731856403098711121722383113"+
                "62229893423380308135336276614282806444486645238749"+
                "30358907296290491560440772390713810515859307960866"+
                "70172427121883998797908792274921901699720888093776"+
                "65727333001053367881220235421809751254540594752243"+
                "52584907711670556013604839586446706324415722155397"+
                "53697817977846174064955149290862569321978468622482"+
                "83972241375657056057490261407972968652414535100474"+
                "82166370484403199890008895243450658541227588666881"+
                "16427171479924442928230863465674813919123162824586"+
                "17866458359124566529476545682848912883142607690042"+
                "24219022671055626321111109370544217506941658960408"+
                "07198403850962455444362981230987879927244284909188"+
                "84580156166097919133875499200524063689912560717606"+
                "05886116467109405077541002256983155200055935729725"+
                "71636269561882670428252483600823257530420752963450";
    char chr[] = new char[str.length()];
    chr=str.toCharArray();
    long product = 0;
    String digits = "";
    for (int i = 0; i < chr.length - 13; i++) 
    {   
        long product1 = (long)Character.getNumericValue(chr[i+0])*Character.getNumericValue(chr[i+1])*Character.getNumericValue(chr[i+2])*Character.getNumericValue(chr[i+3])*Character.getNumericValue(chr[i+4])*Character.getNumericValue(chr[i+5])*Character.getNumericValue(chr[i+6])*Character.getNumericValue(chr[i+7])*Character.getNumericValue(chr[i+8])*Character.getNumericValue(chr[i+9])*Character.getNumericValue(chr[i+10])*Character.getNumericValue(chr[i+11])*Character.getNumericValue(chr[i+12]);

        if(product < product1)
            {
                product = product1;
                digits = ""+chr[i+0]+chr[i+1]+chr[i+2]+chr[i+3]+chr[i+4]+chr[i+5]+chr[i+6]+chr[i+7]+chr[i+8]+chr[i+9]+chr[i+10]+chr[i+11]+chr[i+12];
            }
    }
    System.out.println(product);
    System.out.println(digits);

     }
}
吕鸿朗
2023-03-14

您正在乘以字符的数值,而不是乘以数字。

chr[i x] 替换为 Character.getNumericValue(chr[i x])。

除此之外,每 13 位数字执行两次乘法是浪费。执行一次乘法并将结果存储在变量中,以便您可以重复使用它。

更好的是,在每次迭代中,您可以获取上一次迭代的结果,除以上一次迭代的第一个数字,然后乘以当前迭代的最后一位数字。这将为您节省许多乘法。编辑 :实际上,此优化只有在数字中没有零的情况下才能工作,因此您可以忘记它。

 类似资料:
  • 这个问题参考了欧拉项目问题5,所以要小心剧透!问题5: 2520是可以被1到10的每个数字除的最小数,没有任何余数。可以被1到20的所有数字整除的最小正数是多少? 我用Ruby编写了以下代码作为问题5的解决方案。 然而,每当我运行脚本时,它都会挂起。请注意,我在1到10范围内的基本情况2520上测试了相同的方法,效果很好。 为什么它适用于更简单的情况,但不适用于更高级的情况?我能做些什么来修复我所

  • pom。xml 我在Eclipse中使用Spring、jsp、servlet制作Web项目。但是Spring核心依赖会带来麻烦。 在xsi中:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" 错误消息很长。。。我不知道。。 无法从传输公用日志:公用日志:jar:1.

  • 13195的主要因子为5、7、13和29。数字600851475143中最大的素因子是什么? 我用自己的方式在Euler项目上解决了这个问题,速度很慢,然后我在某人的github帐户上找到了这个解决方案。我不明白为什么它会起作用。为什么删除了许多因子,这些因子等于一个指数?有什么见解吗?

  • 我不禁想到,有一个解决方案只涉及一个循环。有人有想法吗?我更喜欢只使用一个循环的答案,但任何比我目前的效率更高的都是很好的。

  • 本文向大家介绍欧拉图,包括了欧拉图的使用技巧和注意事项,需要的朋友参考一下 欧拉图-如果存在包含图G的每个边的闭合轨迹,则连通图G称为欧拉图。 欧拉路径-欧拉路径是仅使用图形的每个边缘一次的路径。欧拉路径在不同的顶点处开始和结束。 欧拉电路-欧拉电路是只使用图形的每个边一次的电路。欧拉电路始终在相同的顶点处开始和结束。当且仅当G的所有顶点均具有偶数度时,连通图G是欧拉图,而当且仅当其边缘集可分解为

  • 本文向大家介绍.欧拉公式相关面试题,主要包含被问及.欧拉公式时的应答技巧和注意事项,需要的朋友参考一下 参考回答:

  • 表示 Euler 的类。 欧拉角描述一个旋转变换,通过指定轴顺序和其各个轴向上的指定旋转角度来旋转一个物体。 代码示例 const a = new THREE.Euler( 0, 1, 1.57, 'XYZ' ); const b = new THREE.Vector3( 1, 0, 1 ); b.applyEuler(a); 构造器(Constructor) Euler( x : Float,