實驗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;
}