大学计算机基础C语言实验习题选(2)实验4-5简单枚举(出的比较较好)类似水仙花数

实验4-5 数字组合

编写程序abcd.c,设有十进制数字a,b,c,d,e,求满足下列式子:abc*e=dcba(a≠0,e≠0且e≠1)的最大的abcd。

格式要求 输入:无输入 输出: 求出满足条件的abcd, printf(“abcd=%d\n”, abcd)

保存,编译、运行、测试成功后将源程序文件(.c或.cpp)压缩,提交。

提示:abc是指由数字a,b,c组合得到的3位整数,即a100+b10+c dcba,abcd也是组合得到的。

和求水仙花数有点像,比较好的入门枚举题

方法一:直接做

具体细节看注释

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j,t,tot=0,temp;
    int a[1000+5];
    memset(a,0,sizeof(a));
    for(i=100;i<=999;i++)//从100枚举到999,三位数abc
    {
        temp=(i%10)*100+(i/10%10)*10+i/100;//把abc变成cba
        if(temp<100)//显然如果换过来不是3位数,肯定是无解的,因为cba是三位数
        {
            continue;//跳过这次循环,到下一次
        }
        for(j=1;j<=9;j++)
        {
            t=i*j;
            //printf("%d\n",t);
            if(t>1000&&t%1000==temp)
            {
                a[tot++]=i*10+t/1000;
                //printf("%d %d\n",a[tot-1],j);//这句代码测试用,你可以看到具体的abcd和e
            }
        }
    }
    /*for(i=0;i<tot;i++)
    {
        printf("%d\n",a[i]);
    }*/
    //上面的代码也是测试使用 ,检查是否正常运行,输出所有满足条件的数
    printf("%d",a[tot-1]);//按要求取最大的数
    return 0;
}

给出其他可行解
4992 6
5992 5
8023 4
9018 9
9676 7
abcd e

方法二:打表

直接输出答案就行了,时间复杂度o1,答案实际上是9676

#include<stdio.h>
#include<string.h>
int main()
{
    int abcd=9676;
    printf("abcd=%d\n",abcd);
    return 0;
}

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值