問題の説明:
観測番号:12321と123321には共通の機能があり、左から右に読み取られるか、右から左に読み取られるかにかかわらず、同じです。このような番号は、回文数と呼ばれます。
この質問では、5桁または6桁の10進数を見つける必要があります。次の要件を満たします。
数値の桁の合計が入力整数と等しい。
入力形式:
正の整数n(10 <n <100)。これは、満たす必要のある桁の合計を表します。
出力形式:
複数行。各行には、要件を満たす5桁または6桁の整数が含まれます。
番号は昇順で並べられています。
条件が満たされない場合、出力:-1
サンプル入力:
44
出力例:
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
サンプル入力:
60
サンプル出力:
-1
c参照コード1:
#include <stdio.h>
int n;
int main()
{
scanf("%d",&n);
int i,flag=0;
for(i=10000;i<=999999;i++)
{
int sum=0;
int t=i,k=0;
while(t!=0)
{
k=k*10+t%10;
sum+=t%10;
t=t/10;
}
if(k==i&&sum==n)
{
printf("%d\n",i);
flag=1;
}
}
if(flag==0)
printf("-1");
return 0;
}
回文の数を判断するために、このメソッドへのリンクを添付してください
。
c参照コード2:
#include <stdio.h>
int n;
int a[10];
int main()
{
scanf("%d",&n);
int i,flag=0;
for(i=10000;i<=999999;i++)
{
int sum=0;
int t=i,j=0,k1,k2;
while(t!=0)
{
a[j++]=t%10;
sum+=t%10;
t=t/10;
}
for(k1=0,k2=j-1;k1<=k2;k1++,k2--)
{
if(a[k1]!=a[k2])
{
break;
}
}
if(k1>k2&&sum==n)
{
printf("%d\n",i);
flag=1;
}
}
if(flag==0)
printf("-1");
return 0;
}
このメソッドを添付して、回文リンクの数を決定します:
ポータル