答え:
#include<stdio.h>
int main()
{
for(int i=100;i<=999;i++)
{
if(i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10))
{
printf("%d\n",i);
}
}
return 0;
}
分析します:
実際には、3 桁の数値を分解して 3 乗するだけで済みます。
int は整数であるため、 ( i /100 ) も整数であり、C 言語の除算は丸められずに直接丸められます。
まず 100 の位を分離します: ( i / 100 ) 次に cube;
10の位の区切り:最初に(i % 100)余りを取り、余りを取った後、2桁の数値を取得します。次に、/ 10を実行すると、2桁の数値の10の単位の数値を取得できます。それを立方体化します。
同様に、再度 1 桁を区切ります。数字は直接 3 桁の数値 ( i %10 ) であり、その余りを 1 桁にしてから 3 乗します。
最後に足し合わせると上記になります
i==(i/100)*(i/100)*(i/100)+((i%100)/10)*((i%100)/10)*((i%100)/10)+(i%10)*(i%10)*(i%10)
for文とifを積み上げることで実現できます。
この質問は、C Language Network の質問番号 1016 からのものです。