View Code of Problem 18

#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
int arr[10000];
/*
	找规律  
			2   0
			3   1
			4   2
			5   4
			6   6
			7   9
			8   12 
			9   16
			10   20
		有两种规律,一种是0->1 +1 ;1->2 +1;2->4 +2 ;4->6 +2
		另一种规律,2=2+0,4=3+1,6=4+2,9=5+4,即arr[i]=arr[i-2]+i-2;
*/
int main()
{
	int temp = 1;
	int k = 0;
	arr[1] = 0;
	arr[2] = 0;
	for (int i = 3; i < 10000; i++) {
		if (k == 2) {
			k = 0;
			temp++;
		}
		arr[i] = arr[i - 1] + temp;
		k++;
		
	}
	int n;
	while (cin >> n) {
		cout << arr[n] << endl;
	}

	return 0;
}

Double click to view unformatted code.


Back to problem 18