日期:2014-05-18  浏览次数:20728 次

给大家练练手,题目如下
例如:
S(3) 表示 3*3=9 
S(230) 表示 2*2+3*3+0*0=13
S(34) 表示 3*3+4*4=25 

下面是范例:
************************
S(37)=3*3+7*7=58.
S(58)=5*5+8*8=89.
S(89)=145.
S(145)=42. 
S(42)=20.
S(20)=4.
S(4)=16.
则表示 →表示输入16 输出37

S(7)=49.
S(49)=97.
S(97)=130.
S(130)=10.
则表示 →表示输入10 输出7

请注意:1.输出的数是最小的
  2.这个顺序将重复计算,只要找到输入的数就可以停止。

请大家踊跃回答

------解决方案--------------------
C# code
int S(int y)
{
    return y.ToString().Select(x => Convert.ToInt32(x) * Convert.ToInt32(x)).Sum();
}

------解决方案--------------------
探讨

C# code
int S(int y)
{
return y.ToString().Select(x => Convert.ToInt32(x) * Convert.ToInt32(x)).Sum();
}

------解决方案--------------------
探讨
例如:
S(3) 表示 3*3=9
S(230) 表示 2*2+3*3+0*0=13
S(34) 表示 3*3+4*4=25

下面是范例:
************************
S(37)=3*3+7*7=58.
S(58)=5*5+8*8=89.
S(89)=145.
S(145)=42.
S(42)=20.
S(20)=4.
S(4)=16.
则……

------解决方案--------------------
探讨

我是菜鸟,初步写成这样,虽然不精简,但绝对没错儿!
C# code

Int32 iRe = 0;
string iStr = i.ToString();
char[] iChar = iStr.ToCharArray();
foreach (char ic in iChar)
……