C++與演算法

解答 - Feynman

若手帕的邊長是5格正方形,則答案會是

  • 邊長為1的正方形共 5*5 個
  • 邊長為2的正方形共 4*4 個
  • 邊長為3的正方形共 3*3 個
  • 邊長為4的正方形共 2*2 個
  • 邊長為5的正方形共 1*1 個

個正方形相加。


以此類推到手帕的邊長是N格正方形,則答案會是

  • 邊長為1的正方形共 N*N 個
  • 邊長為2的正方形共 (N-1)*(N-1) 個
  • ...
  • 邊長為N-1的正方形共 2*2 個
  • 邊長為N的正方形共 1*1 個

個正方形相加。

#include<iostream>
using namespace std;


int main()
{
    int N;
    int i;
    int ans;

    while( cin >> N )
    {
        if( N == 0 )
            break;

        ans = 0;
        i = 0;
        while( i < N )
        {
            ans = ans + (N-i)*(N-i);

            i = i+1;
        }
        cout << ans << endl;
    }

    return 0;
}