題目鏈接:點一點
基礎練習 特殊迴文數
時間限制:1.0s 內存限制:512.0MB
提交此題 錦囊1 錦囊2
問題描述
123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
輸入一個正整數n, 編程求所有這樣的五位和六位十進制數,滿足各位數字之和等於n 。
輸入格式
輸入一行,包含一個正整數n。
輸出格式
按從小到大的順序輸出滿足條件的整數,每個整數佔一行。
樣例輸入
52
樣例輸出
899998
989989
998899
數據規模和約定
1<=n<=54。
思路:
位數確定,五位數字或六位數字。
第一位和最後一位數字相同,第二位和倒數第二位數字相同,六位數字中間兩位相同,此時注意要分一下奇偶。
用兩個循環嵌套。
代碼如下:
#include<cstdio>
int main()
{
int n;
while(~scanf("%d",&n))
{
int i,j,k;
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
{
k=n-(i+j)*2;
if(k>=10)
continue;
else if(k<0)
break;
else
printf("%d%d%d%d%d\n",i,j,k,j,i);
}
}
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
{
int ans=n-(i+j)*2;
if(ans&1)//注意,ans需要是偶數纔可以除以2哦,這樣總數相加纔是n
continue;
else
k=ans/2;
if(k>=10)
continue;
else if(k<0)
break;
else
printf("%d%d%d%d%d%d\n",i,j,k,k,j,i);
}
}
}
return 0;
}