用C语言求解工程Euler#4 [英] Solving Project Euler #4 with C language

查看:14
本文介绍了用C语言求解工程Euler#4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图用C语言解决Project Euler的问题4,但总是得到错误的答案。

// Project Euler - Problem 5 
// 09/01/2014
#include <stdio.h>

int a,b,c,digits[14],e,y,z,biggestNum;

void isPalindrome (int x)
{
    a = -1;
    c = 0;
    b = x;
    while (b != 0)
    {
        digits[c] = (b % 10);
        b=b/10;
        c++;
    }
    while (c>=a)
    {
        if(digits[++a]!=digits[--c])
        {
            break;
        }
        if(a==c) {  biggestNum=x; }
        else if(a==c-1) {   biggestNum=x; }
    }
}

int main (void)
{
    for(y=10; y<1000; y++)
    {
        for(z=10; z<1000; z++)
        {
            isPalindrome(y*z);
        }
    }
    printf ("%d",biggestNum);
    return 0;
}

有人能告诉我我的代码有什么问题吗?也许是在检查这个数字是不是回文函数? 谢谢 The Problem

推荐答案

您的代码找不到最大的回文,如果您遍历数字,它会找到最后一个回文

10* 10, 10 * 11, 10 * 12, .... 10 * 999
...
999 * 10, 999 * 11, ....       999 * 999

如果最大的回文正好是(比方说)750*750,但999*11也是回文,则999*11将覆盖正确答案。

您每次需要测试您的答案是否大于您以前得到的最大答案。

这篇关于用C语言求解工程Euler#4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆