鱼C论坛

 找回密码
 立即注册
查看: 1135|回复: 7

求两个三位整数乘积构成的最大回文数

[复制链接]
发表于 2020-11-17 13:01:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 超越大神 于 2020-11-17 14:52 编辑
#include<stdio.h>
int main(void)
{
        int i,j,k,flag=0,s;
        for(i=998001;i>=10000;i--)
        {
            s=i;
            j=0;
                while(s>0)
                {
                        j=j*10+s%10;
                        s=s/10;
                }
                if(j==s)//是回文数
                for(k=100;k<=999;k++)
                {
                        if((j%k==0)&&(j/k>=100)&&(j/k<1000))
                        {
                                flag=1;break;//回文数是否两个三位整数的乘积 
                        }
                 } 
                 if(flag) break;
        }
        printf("%d,%d",i,k);
        return 0;
}

感觉程序没错啊,但是不但回文数不对,k的值直接变为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-17 14:51:54 | 显示全部楼层
yijiejue
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-17 15:16:24 | 显示全部楼层
你这个题目有问题,从 10000 ~ 998001 ,回文数有很多,但没有一个回文数是两个三位数的乘积
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 18:26:24 | 显示全部楼层
风过无痕1989 发表于 2020-11-17 15:16
你这个题目有问题,从 10000 ~ 998001 ,回文数有很多,但没有一个回文数是两个三位数的乘积

咋没有啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 18:28:40 | 显示全部楼层

我程序有问题,有一行if哪一行写错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-17 19:18:59 | 显示全部楼层
超越大神 发表于 2020-11-17 18:28
我程序有问题,有一行if哪一行写错了

你举几个例子出来,哪两个三位数的相乘是一个回文数

下午的程序我已经删除掉了,你举出例子来,我再重写程序来验证
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 19:45:36 | 显示全部楼层
风过无痕1989 发表于 2020-11-17 19:18
你举几个例子出来,哪两个三位数的相乘是一个回文数

下午的程序我已经删除掉了,你举出例子来,我再重 ...
#include<stdio.h>
int main(void)
{
        int i,j,k,flag=0,s;
        for(i=998001;i>=10000;i--)
        {
            s=i;
            j=0;
                while(s>0)
                {
                        j=j*10+s%10;
                        s=s/10;
                }
                if(j==i)//是回文数这一行本来写错了改过来了
                for(k=100;k<=999;k++)
                {
                        if((j%k==0)&&(j/k>=100)&&(j/k<1000))
                        {
                                flag=1;break;//回文数是否两个三位整数的乘积 
                        }
                 } 
                 if(flag) break;
        }
        printf("%d,%d",i,k);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-17 21:32:29 | 显示全部楼层

上面的结论错误,我又重新写了一个
#include<stdio.h>
int main()
{
        int i, j, k,m = 0,sw, wa, qi, ba, sh, ge;

        for (i = 998001;i >= 10000;i--)
        {
                sw = i / 100000;
                wa = (i - sw * 100000) / 10000;
                qi = (i - sw * 100000 - wa * 10000) / 1000;
                ba = (i - sw * 100000 - wa * 10000 - qi * 1000) / 100;
                sh = (i - sw * 100000 - wa * 10000 - qi * 1000 - ba * 100) / 10;
                ge = i % 10;
                if (sw == ge && wa == sh && qi == ba)
                {
                        /*                        printf("%d 是回文数\n", i);   */
                        for (j = 999;j >= 100;j--)
                        {
                                for (k = 999;k >= 100;k--)
                                {
                                        if (i == j * k && k != m)     // 设置变量 m 的目的过滤重复(比如:1 x 2 与 2 x 1)
                                        {
                                                m = j;
                                                printf("%d 是符合要求的回文数: %d = %d * %d\n", i, i, j, k);
                                                break;
                                        }
                                }
                        }
                }
// 修改下面 else 语句的条件可以改变仅仅输出最大的一个,还是全部符合要求的回文数;
// 如条件改为 sw == 0,则仅输出 6 位数的回文数
                else if(m != 0)
                        break;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表