大學計算機基礎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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章